我想计算一个衡量足球队势头的指标,在这种情况下是某支球队在最近 3 场比赛中获得的分数。我的数据如下所示:
HomeTeam AwayTeam H_Pts A_Pts
Barcelona Getafe 3 0
Levante Barcelona 1 1
Barcelona Las Palmas 3 0
Las Palmas Barcelona 3 0
Barcelona Madrid 1 1
这只是一些巴塞罗那比赛的示例。所以基本上我想要结束的是两个额外的列(比如 Home_Momentum、Away_Momentum),它们将这支特定球队在最近 3 场比赛中获得的分数相加(不包括当前一场)。所以它应该看起来像这样:
HomeTeam AwayTeam H_Pts A_Pts Home_Momentum Away_Momentum
Barcelona Getafe 3 0 NaN NaN
Levante Barcelona 1 1 NaN NaN
Barcelona Las Palmas 3 0 NaN NaN
Las Palmas Barcelona 3 0 x 7
Barcelona Madrid 1 1 4 y
其中 x (y) 是拉斯帕尔马斯 (马德里) 在过去 3 场比赛中获得的积分总和。
到目前为止,我想出的是:
data["Home_Momentum"] = data.groupby("HomeTeam")["H_Pts"].apply(lambda x: x.rolling(3).sum().shift())
但这样做的问题是它没有考虑球队的客场比赛。
你有什么想法如何解决这个问题吗?