Pandas DataFrame 多级列索引重塑与长格式转换教程

本文介绍如何将具有多行表头(年份+高低值)的宽格式dataframe,通过multiindex和stack操作高效转换为规范的长格式结构。

在实际数据分析中,常会遇到以多行作为复合列名的“非标准”宽格式数据——例如第一行为年份、第二行为统计类型(如 low/high),后续行为指标名称(如 foo/bar)。这种结构虽便于人工阅读,却不利于计算与建模。Pandas 提供了灵活的 MultiIndex 与 stack() 配合 set_axis() 的组合方案,可一步完成语义化重塑。

核心思路是:将前两行提取为列的双层索引 → 将数据主体(第2行起)设为行索引 → 按参数名重命名索引 → 堆叠年份-类型维度 → 重置索引得到规整长表

以下为完整实现代码(含关键注释):

import pandas as pd
import numpy as np

# 构造原始数据(注意:第0行是列名行,第1行是子列名行)
data = {
    0: ['parameter', '', 'foo', 'bar'],
    1: [2001, 'low', 1, np.nan],
    2: [2001, 'high', 2, np.nan],
    3: [2002, 'low', 7, 12],
    4: [2002, 'high', 8, 13],
}
df = pd.DataFrame(data)

# 步骤1:用前两行(跳过第0列)构建 MultiIndex 列
# df.iloc[0, 1:] → 年份数组 [2001, 2001, 2002, 2002]
# df.iloc[1, 1:] → 类型数组 ['low', 'high', 'low', 'high']
idx = pd.MultiIndex.from_arrays(
    [df.iloc[0, 1:], df.iloc[1, 1:]], 
    names=('year', 'stat')  # 显式命名层级,增强可读性
)

# 步骤2:取数据主体(第2行及以后),设第0列为行索引(即 'foo', 'bar')
df_data = df.iloc[2:].set_index(0)

# 步骤3:将列替换为新 MultiIndex,并重命名行索引为 'parameter'
df_data = df_data.set_axis(idx, axis=1).rename_axis('parameter')

# 步骤4:stack 第一层('year'),自动展开为行;reset_index 得到平面DataFrame
result = df_data.stack(0).reset_index(name='value')

# 可选:分离 'stat' 列为独立列(low/high),便于后续分析
result = result.pivot(index=['parameter', 'year'], columns='stat', values='value') \
                .reset_index() \
                .rename_axis(None, axis=1)

输出结果为:

Lifetoon

免费的AI漫画创作平台

下载

  parameter  year  high  low
0       foo  2001   2.0  1.0
1       foo  2002   8.0  7.0
2       bar  2002  13.0 12.0

⚠️ 注意事项:

  • df.iloc[0, 1:] 和 df.iloc[1, 1:] 必须长度一致,否则 from_arrays 报错;建议先校验 len(df.iloc[0,1:]) == len(df.iloc[1,1:]);
  • 若原始数据存在缺失列(如某年份缺 high),stack() 会保留 NaN,符合预期;
  • stack(0) 中的 0 表示堆叠最外层列索引(即 'year' 层),若需堆叠内层(如 'stat'),应使用 stack(1);
  • 最终 pivot() 步骤可省略,若接受 MultiIndex 列(如 result.columns = MultiIndex.from_tuples([('foo', 2001), ...])),则更节省内存。

该方法避免了手动循环或 melt() + pivot() 的多步冗余,兼具简洁性与可扩展性,适用于任意规模的年份×类型二维列结构重塑。

相关推荐:

亚马逊硬件主管 Panos Panay:正以自研芯片重塑沉浸式 AI 体验

感谢网友 風見暉一 的线索投递! 7 月 6 日消息,据美媒 CNBC 当地时间 7 月 2 日报道,Amazon(亚马逊)硬件主管 Panos Panay 表示,该企业正以自研芯片重塑消费电子设备的沉浸式 AI 体验。Panos Panay 提到,亚马逊的自有芯片 AZ3 / AZ3 Pro 正为 2025 年发布的多款 Echo 智能音频设备提供动力,Fire TV 电视也配备了自有芯片。亚马...

腾讯混元正式推出Hy-Memory记忆插件,重塑长期协作型AI体验

5月29日,腾讯混元团队正式推出面向openclaw平台定制的长期记忆增强插件——hy-memory,聚焦破解ai代理在持续交互过程中“记不牢、理不明”的关键瓶颈。该插件依托六级记忆架构与双模协同机制,赋予ai接近人类“外置大脑”的认知延展能力。 Hy-Memory首次将记忆结构细分为原始痕迹、原子事实、身份画像、会话摘要、心智模型及前瞻意图六大层级,并融合System1(即时响应快通道)与Sys...

广告即服务:谷歌搜索的“AI式重塑”,将付费推荐精准嵌入对话流

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 在2026年5月20日举行的 I/O2026 全球开发者大会上,谷歌正式宣布对其赖以成名的搜索业务启动自1999年诞生以来最深刻的一次系统性升级。依托 Gemini 3.5 Flash 模型的全面集成,谷歌上线了多款原生融合AI能力的广告新形态,彻底消融了传统广告模块与自然搜索结果之间的物理与逻...
· AI · 179066

开启全模态开源时代:网易有道“子曰4.0”重塑AI交互标准

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 近日,网易有道正式推出“子曰”大模型的4.0版本,宣告该系列全面跨入“全模态”新阶段。本次迭代不仅实现了文本、图像与语音信息的深度融合与协同处理,更以“全量开源”为战略支点,向全球开发者开放其核心模型与工具链,旨在借助开源力量推动AI技术普惠化,切实降低行业应用门槛与部署成本。 关键技术跃迁:多...
· AI · 168044

AI影视制作智能体:纳逗Pro如何重塑长篇叙事创作流程

纳逗Pro重构影视创作全链路,以“故事锚点”优化叙事结构、分镜直连实景校验、剪辑“叙事权重”可视化、成片自动模拟观众认知,将隐性经验转化为可测量参数。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 纳逗Pro不是简单把AI塞进剪辑软件,而是从长篇叙事的本质出发,重构“构思—分镜—拍摄—剪辑—成片”的全链路。它不替代编剧或导演,但让专业创作者...
· AI · 57600

真正的《小小梦魇3》!曝《生灵重塑》销量已破百万&DLC确定

根据embracer group最新发布的财报数据,《生灵重塑》(reanimal)自正式发售以来,全球总销量已成功突破100万套。公司方面评价称,这款恐怖题材冒险游戏是近年表现最为亮眼的全新ip之一,不仅收获了玩家群体的高度认可,也赢得了专业媒体的广泛赞誉。 Embracer首席执行官菲尔·罗杰斯在财报中特别点名表扬了开发团队Tarsier Studios:“这支才华横溢的团队以《生灵重塑》这一...

Canva最新版支持PDF转HTML吗_Canva网页格式转换【代码】

Canva 官方不支持将设计稿直接导出为 HTML;可行方案包括:第三方 OCR 工具(效果差)、手动重写语义化 HTML/CSS(唯一高质量路径)、PDF 转 HTML(依赖 PDF 结构)、或嵌入 iframe(非转换但可发布)。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您尝试将 Canva 设计稿直接转为可运行的 HTML ...
· AI · 187579

PS打开图片显示索引颜色无法编辑怎么办_转换图像模式为RGB【模式】

应将图像从索引颜色模式转换为RGB颜色模式:一、通过“图像→模式→RGB颜色”菜单切换;二、点击顶部“模式”入口选择RGB;三、使用Shift+Ctrl+Y(Win)或Shift+Cmd+Y(Mac)快捷键;四、录制并播放“转RGB”动作批量处理。 如果您在Photoshop中打开图片后,图层面板显示“索引”,所有编辑功能(如图层操作、滤镜、调整工具等)均呈灰色不可用,则说明该图像当前处于索引颜色...