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

基于另一列对Pandas DataFrame执行groupby、sum和mean操作求助

解决方案

你可以用 pandas 的 groupby 配合 agg() 方法,一次性完成分组、求和、求均值操作,还能给不同列指定不同的聚合逻辑,具体代码如下:

1. 基础导入(若未执行)

import pandas as pd

2. 多列自定义聚合

假设你需要按 Month-Year 分组,对 meets_target 求和、对 percentage 求均值,同时保留每个月的总数量 total,代码如下:

result = mydf.groupby('Month-Year').agg(
    total_meets=('meets_target', 'sum'),    # 对meets_target列求和,命名为total_meets
    avg_percent=('percentage', 'mean'),     # 对percentage列求均值,命名为avg_percent
    monthly_total=('total', 'first')        # total列每组值相同,取第一个即可
).reset_index()

执行后得到的结果:

Month-Yeartotal_meetsavg_percentmonthly_total
Apr-20206749.99567
May-20209749.99597
Jun-20207049.94570

3. 同一列多聚合操作

如果需要对同一列同时做求和和均值计算(比如对 meets_target),可以简化写法:

result = mydf.groupby('Month-Year')['meets_target'].agg(['sum', 'mean']).reset_index()

输出结果:

Month-Yearsummean
Apr-20206733.5
May-20209748.5
Jun-20207035.0

关键说明

  • agg() 支持传入字典,通过「新列名: (原列名, 聚合函数)」的格式自定义聚合规则,灵活度很高
  • 聚合函数可以用字符串(如 'sum'、'mean'),也可以直接用 pandas 内置函数(如 pd.Series.sum)
  • 对于分组内值完全一致的列(比如 granularity_date),用 'first' 或 'last' 提取值效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:40:57