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

如何选取并打印pandas多级表头DataFrame的指定列?

多级表头列访问异常原因

使用header=[1,2,3,4,5,6]参数读取Excel后,生成的DataFrame列是6层结构的MultiIndex对象,并非单层列名,直接传入单层字符串"PARTNER"无法匹配到对应列,会触发访问报错。
另外你贴的读取代码缺少闭合右括号,正确语法为:

df=pd.read_excel(path,sheet_name="name",header=[1,2,3,4,5,6])
正确访问目标列的方法
  • 方法1:完整元组匹配(最稳妥,支持赋值操作)
    先执行代码打印全部列的层级结构,确认PARTNER对应的各层表头值:

    print(df.columns)
    

    输出结果为MultiIndex格式的列元组列表,找到PARTNER对应的完整元组(从你给出的Excel结构看,该列前5层表头依次为Required、Legacy Contact Person Number、Central Data、Header Data、CHAR),直接用元组作为键访问即可:

    # 替换为print(df.columns)输出的实际元组值
    target_col = ("Required", "Legacy Contact Person Number", "Central Data", "Header Data", "CHAR", "PARTNER")
    # 打印列数据
    print(df[target_col])
    # 空值填充
    df[target_col] = df[target_col].fillna("Missing")
    
  • 方法2:按层级索引匹配(不用写全前面层级)
    用xs方法指定匹配最末层(靠近数据行的表头层)的列名,无需关心上层表头内容:

    # axis=1代表按列查找,level=-1代表匹配最后一级表头
    partner_series = df.xs("PARTNER", level=-1, axis=1)
    print(partner_series)
    

    该方法适合快速查看列数据,做赋值操作时更推荐用方法1避免索引错位。

  • 方法3:扁平化列名(后续无需多级表头时使用)
    如果不需要保留多级表头结构,可以直接把列名替换为最末一级的表头值,之后就可以用单层列名访问:

    # 取最后一级表头作为新列名
    df.columns = df.columns.get_level_values(-1)
    # 直接访问
    print(df["PARTNER"])
    df["PARTNER"] = df["PARTNER"].fillna("Missing")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:46:00