You need to enable JavaScript to run this app. 如何用pandas按列分组计算累计均值(无循环无lambda适配大数据量)
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas按列分组计算累计均值(无循环无lambda适配大数据量)

解决方案

可以直接使用pandas内置的expanding扩展窗口函数实现,无需循环或lambda表达式,性能适配大数据量场景:

核心代码

# 按name分组后计算累计平均值,保留两位小数
df['avg'] = df.groupby('name')['num'].expanding().mean().reset_index(drop=True).round(2)

代码说明

  • groupby('name'):按name列独立分组计算,组间互不干扰
  • expanding():生成扩展窗口,窗口范围为分组内第一行到当前行,正好匹配「截至当前行」的计算需求
  • mean():计算窗口内num列的平均值
  • reset_index(drop=True):消除分组运算产生的多级索引,和原DataFrame行顺序对齐
  • round(2):保留两位小数,匹配预期输出格式

若同一name下的date不是按时间升序排列,可先排序再计算:

df = df.sort_values(['name', 'date']).reset_index(drop=True)
df['avg'] = df.groupby('name')['num'].expanding().mean().reset_index(drop=True).round(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:30:02