带过滤器的滚动平均- Python



我有一个数据框(results)的英超结果从过去的28年,我试图计算平均主队积分(HPts)从他们的前5个主场比赛在本赛季。行已经按时间顺序排列。我正在有效地寻找的是下面的启动代码的一个版本,该版本通过HomeTeamSeason进行分区,并使用匹配HomeTeamSeason的前5行窗口计算HPts的平均值。显然,现有的代码写不做我需要的(它看起来只有最后5行不管球队和赛季),但只是在那里显示我的意思作为一个起点。

HomeTeam        AwayTeam Season Result  HPts  APts
0             Arsenal        Coventry   1993      A     0     3
1         Aston Villa             QPR   1993      H     3     0
2             Chelsea       Blackburn   1993      A     0     3
3           Liverpool  Sheffield Weds   1993      H     3     0
4            Man City           Leeds   1993      D     1     1
..                ...             ...    ...    ...   ...   ...
375         Liverpool  Crystal Palace   2020      H     3     0
376          Man City         Everton   2020      H     3     0
377  Sheffield United         Burnley   2020      H     3     0
378          West Ham     Southampton   2020      H     3     0
379            Wolves      Man United   2020      A     0     3
[10804 rows x 6 columns]
# Starting point for my code for home team avg points from last 5 home games
results['HomeLast5'] = results['HPts'].rolling(5).mean()

谁知道我如何添加一个新的列与滚动平均积分为一个给定的球队和赛季?我也许可以用循环来解决这个问题,但我肯定这不是解决这个问题的最有效的方法。

将数据帧按HomeTeamSeason分组,然后计算在HPts上滚动mean。然后,为了将计算的平均值赋给原始数据帧,从索引中删除级别0, 1,以便索引对齐能够正常工作。

g = results.groupby(['HomeTeam', 'Season'])['HPts']
results['HomeLast5'] = g.rolling(5).mean().droplevel([0, 1])

相关内容

  • 没有找到相关文章

最新更新