如何用Pandas的df.loc访问Excel带子列的单元格值?
解决pandas中用df.loc读取多级列单元格的问题
你的问题出在多级列索引(MultiIndex)的定位方式上:df.loc的列参数如果是多级结构,必须用元组包裹层级标签,而不是分开传递多个参数。
正确代码写法
df.loc['Step1', ('Product1', '%')]
示例验证
如果你的数据结构类似下面的多级列DataFrame,上面的代码可以正常取值:
import pandas as pd # 构造模拟的多级列数据 columns = pd.MultiIndex.from_tuples([ ('Product1', 'Value'), ('Product1', '%'), ('Product2', 'Value'), ('Product2', '%') ]) df = pd.DataFrame( [[100, 20, 150, 30], [80, 15, 120, 25]], index=['Step1', 'Step2'], columns=columns ) # 读取Step1下Product1的%对应值 print(df.loc['Step1', ('Product1', '%')]) # 输出结果: 20
补充说明
- 如果你的行索引也是多级结构,行标签同样需要用元组指定,比如
df.loc[('StepGroup', 'Step1'), ('Product1', '%')] - 可以通过
df.columns查看当前的列索引结构,确认是否为MultiIndex
内容的提问来源于stack exchange,提问作者meno
相关产品推荐
相关产品推荐

