如何从3D DataFrame的每个一级列分组中统一提取A、B两个子列
你这个是Pandas的**多级列索引(MultiIndex)**结构,按以下方法实现即可:
核心实现代码
直接使用IndexSlice索引切片器,可读性更高:
import pandas as pd # 定义索引切片器 idx = pd.IndexSlice # 第一个冒号选取所有行,后面的切片表示一级列全选、二级列仅选A和B result_df = df.loc[:, idx[:, ['A', 'B']]]
如果不想额外定义切片器,也可以直接用原生切片写法:
result_df = df.loc[:, (slice(None), ['A', 'B'])]
效果验证示例
你可以用下面的测试代码验证效果:
import pandas as pd import numpy as np # 构造和你描述一致的测试数据 columns = pd.MultiIndex.from_product( [['d1', 'd2', 'd3'], ['A', 'B', 'C', 'D']], names=['一级列', '二级列'] ) df = pd.DataFrame(np.random.randn(3, 12), columns=columns) print("原始列结构:\n", df.columns) # 执行提取 idx = pd.IndexSlice result_df = df.loc[:, idx[:, ['A', 'B']]] print("提取后列结构:\n", result_df.columns)
运行后输出的列结构完全符合你需要的格式。
内容的提问来源于stack exchange,提问作者Jewel_R
相关产品推荐
相关产品推荐

