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

Python 分组滚动平均值计算:求EPL主队单赛季近5场主场得分均值

解决方案

你可以直接用pandas原生的groupby+rolling向量化方法实现,完全不需要手写循环,对万级别的数据量可以毫秒级出结果,实现代码如下:

# 计算每支主队单赛季内当前比赛前5场主场平均得分
results['HomeLast5'] = results.groupby(['HomeTeam', 'Season'])['HPts']\
                              .rolling(window=5, min_periods=1)\
                              .mean()\
                              .groupby(['HomeTeam', 'Season'])\
                              .shift(1)\
                              .reset_index(drop=True, level=[0,1])

逻辑说明

  • 外层groupby(['HomeTeam', 'Season'])保证所有计算都限定在「同一球队、同一赛季」的范围内,不会跨赛季、跨球队取数
  • rolling(window=5)指定滚动窗口大小为5场:如果希望不足5场时返回空值,直接保留默认参数即可;如果希望不足5场时按实际已有场数计算平均,保留代码中的min_periods=1参数即可
  • shift(1)将滚动计算结果整体后移1位,排除当前行的得分,刚好取到当前比赛之前的最多5场数据
  • 末尾的reset_index用于对齐groupby产生的多级索引,保证计算结果可以正确匹配原DataFrame的每一行

注意事项

你提到数据已经按时间顺序排列,所以不需要额外排序,如果后续数据顺序发生变化,需要先按赛事时间字段排序后再执行上述代码,否则计算的最近5场顺序会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:09:02