如何访问带多层列索引的pandas三维DataFrame的指定列?
Pandas多层列索引筛选指定次级列的实现方法
你可以通过以下几种常用方法实现需求:
方法1:使用pd.IndexSlice(最推荐,可读性最高)
这是Pandas专门为多层索引设计的选择器,语法直观易维护:
import pandas as pd # 定义索引选择器 idx = pd.IndexSlice # 行维度取所有行,列维度第一层级任意、第二层级匹配col_1 result = df.loc[:, idx[:, 'col_1']]
方法2:使用xs方法
xs是Pandas专门用于提取多层索引指定层级值的方法,参数配置灵活:
# level=1指定匹配第二层级索引(层级从0开始计数,顶层列属于level 0) # axis=1指定操作列索引,drop_level=False保留原有多层索引结构 result = df.xs('col_1', level=1, axis=1, drop_level=False)
方法3:使用布尔索引筛选
直接通过列层级值做布尔判断筛选,无需额外导入工具:
# 获取第二层级所有列名,筛选等于col_1的列 result = df[df.columns.get_level_values(1) == 'col_1']
以上三种方法输出的结果完全符合要求的双层级列结构,会保留h1/col_1、h2/col_1两列。
内容的提问来源于stack exchange,提问作者PeeteKeesel
相关产品推荐
相关产品推荐

