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

Pandas读取Excel后合并前两行为多级表头问题求助

Pandas双表头Excel读取合并方案

错误原因

你在读取Excel时通过header=[0,1]生成的列方向MultiIndex,被后续的轴交换、重置索引操作销毁,最终列变为带nan的单层索引,所以无法合并前两行作为表头。

方案1:合并双表头为单层(符合常规输出需求)

def get_sheet_data(sheet_name='SomeName'):
    # 读取阶段保留原始双表头结构
    df = pd.read_excel(f'{full_q_name}',
                       sheet_name=sheet_name,
                       header=[0,1],
                       index_col=0)
    # 合并上下两层表头,空的下层表头直接沿用上层内容
    merged_cols = []
    for top_level, bottom_level in df.columns:
        if pd.isna(bottom_level):
            merged_cols.append(top_level)
        else:
            # 可自定义拼接符,比如空格、换行符\n
            merged_cols.append(f"{top_level} {bottom_level}")
    df.columns = merged_cols
    # 执行原有转换逻辑
    df = df.swapaxes(axis1="index", axis2="columns")
    return df.set_index('Product Code')

方案2:保留MultiIndex结构(适合需要层级查询的场景)

def get_sheet_data(sheet_name='SomeName'):
    df = pd.read_excel(f'{full_q_name}',
                       sheet_name=sheet_name,
                       header=[0,1],
                       index_col=0)
    # 转置后保留MultiIndex结构
    df = df.T
    df.index = pd.MultiIndex.from_tuples(df.index, names=['header_level1', 'header_level2'])
    # 按需求设置索引,注意Product Code对应的层级位置
    return df.set_index(('header_level1', 'Product Code'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:02