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

pandas DataFrame分组如何对不同列分别求均值和求和

Pandas 分组定制聚合实现方案

你可以直接使用groupby配套的agg()方法,给不同列单独指定聚合规则,不需要对所有列统一计算,具体实现如下:

完整实现代码

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({'ID': ['1a','1a','3a','4a','3a'],
                   'column_1': [10.6, 10.4, 10, 20, 20],
                   'column_2': [10, 20, 30, 40, 50]
                  })

# 按ID分组,对不同列配置不同聚合逻辑
df_result = df.groupby('ID', as_index=False).agg(
    column_1=('column_1', 'mean'),  # column_1计算均值
    column_2=('column_2', 'sum')    # column_2计算总和
)

print(df_result)

输出结果

ID  column_1  column_2
0  1a      10.5        30
1  3a      15.0        80
2  4a      20.0        40

注:你给出的期望结果中ID为4a的column_2总和写为30属于笔误,原数据中ID=4a仅存在1条记录,column_2值为40,因此聚合结果为40。

参数说明

  • as_index=False:将分组字段ID作为普通数据列保留,不会被设置为DataFrame的行索引,和你预期的输出格式匹配。
  • agg()内的参数格式为结果列名=(原列名, 聚合函数),除了内置的mean、sum之外,还支持count、max、min、median等内置统计函数,也支持传入自定义函数实现更复杂的计算逻辑。
  • 如果需要对同一列执行多种聚合计算,只需要新增对应配置即可,例如要同时计算column_1的均值和最大值,可以写成column_1_mean=('column_1', 'mean'), column_1_max=('column_1', 'max')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:48:21