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

如何引用DataFrame GroupBy聚合结果中的聚合列?

如何引用Pandas多层列索引的聚合结果

首先,你通过groupby+agg得到的dfindx是一个带有**多层列索引(MultiIndex)**的DataFrame,外层列是inventory,内层是聚合后的count和sum。下面几种方法可以帮你灵活引用这些聚合列:


1. 引用整个聚合组的所有列

如果你想获取inventory下的全部聚合结果(count和sum两列),直接用外层列名索引即可:

# 返回一个包含count和sum列的DataFrame
inventory_all = dfindx['inventory']

输出的inventory_all结构如下:

count  sum
category item              
A        High        2  330
         Low         1  100
         Med         1  130
         Misc        2  555
B        High        1  453
         Low         2  443
         Misc        1  321

2. 引用单个聚合列

要单独取某一个聚合指标(比如count或sum),需要用元组来指定多层列的路径:

# 获取inventory下的count列,返回Series
count_series = dfindx[('inventory', 'count')]

# 如果想保留DataFrame格式,用双层中括号
count_df = dfindx[[('inventory', 'count')]]

举个例子,count_series的输出是:

category  item
A         High    2
          Low     1
          Med     1
          Misc    2
B         High    1
          Low     2
          Misc    1
Name: (inventory, count), dtype: int64

3. 结合行索引精准取值

如果需要定位到某一行的特定聚合值,比如取category=A, item=High的sum值,可以用loc配合元组索引:

# 精准获取单个值
target_value = dfindx.loc[('A', 'High'), ('inventory', 'sum')]
# 输出:330

或者先定位行,再取列:

target_value = dfindx.loc[('A', 'High')]['inventory']['sum']

4. 可选:将多层列转为单层(更直观)

如果你觉得多层列索引使用起来麻烦,可以把列名合并成单层,方便后续直接引用:

# 合并多层列名,用下划线连接
dfindx.columns = ['_'.join(col) for col in dfindx.columns]

处理后dfindx的列名会变成inventory_count和inventory_sum,之后直接用普通索引即可:

# 直接引用单层列名
count_col = dfindx['inventory_count']
sum_col = dfindx['inventory_sum']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:47:51