我正在开发一个机器学习模型来预测给定团队的得分。我想创建一个列,跟踪每个球队主场比赛的累积得分,但不包括当前比赛(行)。我可以轻松计算累计总数,但我想抵消累计总数以显示累计但不包括当前游戏,下面是数据集的示例。我理想地想创建累积列
游戏_id | 比赛日期 | home_id | 首页_分数 | 累计 |
---|---|---|---|---|
718730 | 2023-04-03 | 145 | 3 | 0 |
718695 | 2023-04-05 | 145 | 7 | 3 |
718687 | 2023-04-06 | 145 | 6 | 10 |
718683 | 2023-04-06 | 109 | 2 | 0 |
718671 | 2023-04-07 | 109 | 6 | 2 |
718656 | 2023-04-08 | 109 | 12 | 8 |
下面的代码是我迄今为止为创建累计总数所做的事情
import pandas as pd
data = pd.read_csv('game_data.csv')
data['home_cumulative'] = data.groupby('home_id')['home_score'].cumsum()
我尝试了以下方法,但结果与我的预期不符
data['home_offset'] = data.groupby('home_id')['home_score'].shift(periods = 1).cumsum().fillna(0)
你的想法基本上是正确的,只是代码稍有偏差:
data['home_offset'] = data.groupby('home_id')['home_cumulative'].shift(1).fillna(0)