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

Pandas分组后如何从嵌套表头选择指定多列(不扁平化表头)

解决多层索引DataFrame的精准选取问题

这问题在处理分组聚合后的多层索引结果时很常见,核心是利用pandas的多层索引(MultiIndex)选择逻辑,我给你两种简洁的实现方法,都能满足你保留表头层级的需求:

方法一:直接用loc同时定位行和列

通过元组指定多层列索引的具体位置,同时用列表形式选取行索引,确保返回的是结构完整的DataFrame:

# 精准选取cat='a'对应的目标列
result = ag.loc[['a'], [('a', 'sum'), ('b', 'count')]]
print(result)

执行后输出完全符合你的需求:

a   b
        sum count
cat
a        2     2

注意:行索引用['a']而非单独的'a',是为了保留cat作为行索引的层级,避免返回Series类型;列索引用元组('a', 'sum')这种形式,能精准匹配多层表头的位置。

方法二:先选列再筛选行(可读性更强)

如果你的聚合结果列很多,先明确指定需要保留的列,再筛选行,逻辑会更清晰:

# 定义需要保留的目标列(多层索引元组)
target_cols = [('a', 'sum'), ('b', 'count')]
# 先筛选列,再选取指定行
result = ag[target_cols].loc[['a']]

这个方法和第一种效果完全一致,只是操作顺序不同,适合列数量较多的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:46