You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Excel多行表头数据转换为标准pandas DataFrame格式

Pandas转换多行表头Excel为标准DataFrame实现方法

核心实现代码

替换代码里的文件路径即可直接运行:

import pandas as pd

# 1. 读取Excel,指定前2行作为多级表头,若表头前有其他无关行,加skiprows=行数跳过
df = pd.read_excel("你的原始数据文件.xlsx", header=[0, 1])

# 2. 补全合并单元格导致的一级表头空值(合并单元格读入后仅首个单元格有值,其余为NaN)
col_level0 = df.columns.get_level_values(0).to_series().ffill().values
col_level1 = df.columns.get_level_values(1).values

# 3. 拼接生成规范单级列名,可根据自己的分组规则调整前缀逻辑
final_columns = []
for group_name, col_name in zip(col_level0, col_level1):
    # 基础信息、备注这类无歧义的列直接用子列名,其他分组列加分组前缀避免重名
    if group_name in ["基础信息", "备注"]:
        final_columns.append(col_name)
    else:
        final_columns.append(f"{group_name}_{col_name}")

# 4. 替换列名,清理全空的无效行
df.columns = final_columns
df = df.dropna(how="all").reset_index(drop=True)

关键参数说明

  • header=[0,1]:指定Excel中第0、1行(对应Excel界面显示的第1、2行)作为多级表头,若你的数据是3行复合表头,传入[0,1,2]即可,以此类推
  • ffill():向前填充空值,适配Excel合并单元格的读取规律——合并单元格读入pandas后,仅区域第一个单元格保留值,其余位置为空值,向前填充可以自动补全同组的一级表头名
  • 列名拼接逻辑可按需自定义:如果不需要分组前缀,直接把final_columns赋值为col_level1即可;如果需要其他分隔符,把下划线替换成需要的符号就行

如果读取后出现列名错位,先检查Excel是否存在隐藏列、表头前的空行/标题行,调整skiprows参数(值为需要跳过的前置行数)和header的行索引即可,注意pandas读取时的行计数从0开始。

内容的提问来源于stack exchange,提问作者Kush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:51:23