访问pandas MultiIndex多层索引DataFrame报AttributeError如何解决
报错原因
你使用的df1.English点式访问语法,在Pandas中仅适用于访问列名对应的列数据,而你构造的df1中English是第一级行索引的取值,并不是列名,因此会触发属性不存在的报错。
正确实现方案
- 方法1:使用
.loc索引器(最推荐,写法简洁)
针对多级行索引,直接在.loc中指定第一级索引的取值即可,默认会匹配所有第二级索引、所有列:
print(df1.loc['English']) # 等价写法,显式指定全选列 # print(df1.loc['English', :])
- 方法2:使用
xs方法提取指定层级索引的行
如果需要明确指定匹配的索引层级,适合多级索引层级较多的场景,可以用xs方法,level=0表示匹配第一级行索引:
print(df1.xs('English', level=0))
- 方法3:布尔索引过滤(适合复杂筛选逻辑)
先通过get_level_values获取指定层级的所有索引值,再做布尔条件筛选,适合需要叠加多个筛选条件的场景:
print(df1[df1.index.get_level_values(0) == 'English'])
内容的提问来源于stack exchange,提问作者qg_java_17137
相关产品推荐
相关产品推荐

