带过滤器的滚动平均值 - Python
Rolling average with filters - Python
我有过去 28 年 EPL 结果的数据框 (results
),我正在尝试计算他们之前 5 场主场比赛的平均主队得分 (HPts
)当前季节。这些行已经按时间顺序排列。我正在有效寻找的是下面的起始代码版本,它按 HomeTeam
和 Season
进行分区,并使用前 5 行的 window 计算 HPts
的平均值匹配 HomeTeam
和 Season
。很明显,现有的代码并不能满足我的需要(不管球队和赛季如何,它只看最后 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()
任何人都知道如何添加一个新列,其中包含给定球队和赛季的滚动平均分?我可能会想出一种通过循环来执行此操作的方法,但我确信这不是解决此问题的最有效方法。
按 HomeTeam
和 Season
对数据帧进行分组,然后在 HPts
上计算滚动 mean
。然后,为了将计算出的平均值分配回原始数据帧,从索引中删除级别 0, 1
,以便索引对齐正常工作。
g = results.groupby(['HomeTeam', 'Season'])['HPts']
results['HomeLast5'] = g.rolling(5).mean().droplevel([0, 1])
我有过去 28 年 EPL 结果的数据框 (results
),我正在尝试计算他们之前 5 场主场比赛的平均主队得分 (HPts
)当前季节。这些行已经按时间顺序排列。我正在有效寻找的是下面的起始代码版本,它按 HomeTeam
和 Season
进行分区,并使用前 5 行的 window 计算 HPts
的平均值匹配 HomeTeam
和 Season
。很明显,现有的代码并不能满足我的需要(不管球队和赛季如何,它只看最后 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()
任何人都知道如何添加一个新列,其中包含给定球队和赛季的滚动平均分?我可能会想出一种通过循环来执行此操作的方法,但我确信这不是解决此问题的最有效方法。
按 HomeTeam
和 Season
对数据帧进行分组,然后在 HPts
上计算滚动 mean
。然后,为了将计算出的平均值分配回原始数据帧,从索引中删除级别 0, 1
,以便索引对齐正常工作。
g = results.groupby(['HomeTeam', 'Season'])['HPts']
results['HomeLast5'] = g.rolling(5).mean().droplevel([0, 1])