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

Pandas中如何引用不同合并单元格下的同名列指定数据?

Pandas多级合并表头列引用方法

带合并单元格的Excel读入Pandas后,会自动生成MultiIndex多级列索引,直接用单级列名df['Worker']索引报错,是因为重名列属于不同的上层分组,单值无法匹配完整的多级索引路径,按以下方法操作即可准确定位目标列:

1. 先校验列索引结构

先执行代码确认当前列的层级结构:

print(df.columns)

正常读取到合并表头时,输出会是如下元组形式的多级索引:

MultiIndex([('A公司', 'Worker'),
            ('A公司', 'Salary'),
            ('B公司', 'Worker'),
            ('B公司', 'Salary'),
            ('C公司', 'Worker'),
            ('C公司', 'Salary')],
           )

如果输出是普通单级索引,说明读文件时没识别到多行表头,重新读入时指定表头行数即可,比如表头占前2行(第一行为公司分组、第二行为具体字段名)时,读入代码写为:

import pandas as pd
df = pd.read_excel("你的文件路径.xlsx", header=[0, 1])

2. 目标列引用方法

两种常用写法都可以准确拿到C公司分组下的Worker列数据:

  • 方法一:传入元组匹配完整索引路径,兼容性最好,不会出现匹配错误
c_worker_data = df[('C公司', 'Worker')]
  • 方法二:用xs交叉索引方法,适合需要批量取同名列的场景
# level=1代表取内层字段层级,axis=1指定按列方向查找
c_worker_data = df.xs('Worker', level=1, axis=1)['C公司']

注意:不要尝试直接用单级列名索引重名列,重名场景下Pandas无法判断你需要的分组归属,会直接报错或返回错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:27:19