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

如何遍历Pandas中按两列分组求和后的groupby对象?

遍历Pandas分组聚合结果的几种方法

没问题!其实遍历Pandas的GroupBy对象或者聚合后的结果非常简单,我结合你的场景给你几种实用的方案:


先给个示例上下文(方便对应你的代码)

先明确下常见的分组求和代码,方便后续举例:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Category1': ['A', 'A', 'B', 'B', 'A'],
    'Category2': ['X', 'Y', 'X', 'Y', 'X'],
    'Value': [15, 25, 30, 40, 10]
})

# 按两列分组并对第三列求和,得到带多级索引的Series
groupby_abundance = df.groupby(['Category1', 'Category2'])['Value'].sum()

方法1:遍历聚合后的结果(最常用)

如果groupby_abundance是你已经求和后的结果(多级索引Series),可以用items()方法遍历每个分组的键和对应求和值:

for (cat1, cat2), sum_val in groupby_abundance.items():
    print(f"分组键:({cat1}, {cat2}),求和结果:{sum_val}")

输出会是:

分组键:(A, X),求和结果:25
分组键:(A, Y),求和结果:25
分组键:(B, X),求和结果:30
分组键:(B, Y),求和结果:40

这里的键是一个元组,对应你分组的两列的取值组合。


方法2:遍历未聚合的GroupBy对象

如果你还保留着未做聚合的GroupBy对象(比如只是groupby_obj = df.groupby(['Category1', 'Category2'])),可以直接遍历每个分组的子DataFrame:

groupby_obj = df.groupby(['Category1', 'Category2'])

for (cat1, cat2), sub_df in groupby_obj:
    print(f"当前分组:({cat1}, {cat2})")
    print("分组对应的原始数据:")
    print(sub_df)
    # 也可以在遍历过程中计算求和
    current_sum = sub_df['Value'].sum()
    print(f"该组求和结果:{current_sum}\n")

方法3:按指定分组键获取结果

如果你不需要遍历所有分组,只想获取某个特定分组的结果,可以用get_group()方法:

# 获取Category1='A'且Category2='X'的分组求和结果
target_group = groupby_abundance.get_group(('A', 'X'))
print(target_group)  # 输出:25

根据你的实际需求选对应的方法就好啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:31