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

如何使用Pandas按Area列分组聚合求和并保留其余列的值

实现方案

你可以通过pandas的groupby+agg方法实现需求,按Area列分组后,对数值列执行求和操作,非数值列取分组内的统一值即可:

方法1:手动指定聚合规则(适合列数较少的场景)

import pandas as pd

# 测试数据集
test = pd.DataFrame({'Area': ['Tipperary','Tipperary','Cork','Dublin'],
                     'Deaths': [11,33,44,55],
                      'Year': [2007,2007,2007,2008]}
)

# 分组聚合操作
result = test.groupby('Area', as_index=False).agg({
    'Deaths': 'sum', # 数值列 Deaths 求和
    'Year': 'first'  # 非数值列 Year 取分组内第一个值(同分组下Year值统一)
})

方法2:自动识别列类型生成聚合规则(适合大规模多列场景)

如果数据列数很多,手动指定规则效率低,可以自动区分数值列和非数值列匹配聚合逻辑:

agg_rules = {}
for col in test.columns:
    # 跳过分组键Area
    if col == 'Area':
        continue
    # 数值列执行求和
    if pd.api.types.is_numeric_dtype(test[col]):
        agg_rules[col] = 'sum'
    # 非数值列取分组内第一个值
    else:
        agg_rules[col] = 'first'

result = test.groupby('Area', as_index=False).agg(agg_rules)

输出结果

最终得到的聚合结果如下:

AreaDeathsYear
Cork442007
Dublin552008
Tipperary442007

注意:如果实际场景中同一个Area分组下的非数值列存在不同取值,可以根据业务需要将first替换为max、last等其他聚合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:54:03