【发布时间】:2021-06-24 01:50:17
【问题描述】:
我有一个类似的 DataFrame
Date HomeTeam OpponentTeam Team_1 Goals
0 2020-05-01 Team_1 Team_2 0
1 2020-05-02 Team_2 Team_1 3
2 2020-05-03 Team_1 Team_3 1
3 2020-05-04 Team_5 Team_1 2
4 2020-05-05 Team_1 Team_2 2
5 2020-05-06 Team_1 Team_4 1
我需要计算Team_1 Goals 每 40 场比赛的总和,而不仅仅是所有比赛。请注意,DataFrame 包含没有 Team_1 的游戏,应该忽略这些游戏。然后我需要画一个图来展示这些总和每年是如何变化的(Team_1 每年总是有超过 40 场比赛)。我试过了:
df["GoalSum"] = df[((df["HomeTeam"] == "Team_1") | (df["OpponentTeam"] == "Team_1")) & (df["Team_1 Goals"] != -1)].dropna()[:40].sum()["Team_1 Goals"]
plt.plot(pd.DatetimeIndex(df['Date']).year, df["GoalSum"])
plt.show()
但不幸的是,这会计算所有 Team_1 Goals 的总和,因此该图是一条直线。我如何计算每 40 场比赛的 Team_1 进球数?一如既往,我们非常感谢任何建议。
编辑:预期输出将是(如果我们想每 3 场比赛求和):
Date HomeTeam OpponentTeam Team_1 Goals GoalSum
0 2020-05-01 Team_1 Team_2 0
1 2020-05-02 Team_2 Team_1 3
2 2020-05-03 Team_1 Team_3 1 4
3 2020-05-04 Team_5 Team_1 2
4 2020-05-05 Team_1 Team_2 2
5 2020-05-06 Team_1 Team_4 1 5
预期的情节如下:
【问题讨论】:
-
能否请您在问题中发布预期输出示例,以便更好地理解您的问题,谢谢。
-
@RavinderSingh13 问题已更新。
-
能否请您更新您的第一个数据框,或者完全删除它。现在令人困惑,因为您的问题是“如何从第一个数据帧转到第二个数据帧”,这是不可能的。
-
这能回答你的问题吗? Take the sum of every N rows in a pandas series。它适用于系列,但同样的原则适用:按 n 行分组(因此 不是 按特定的列组合),然后对这些组求和。您的意思是需要做一些额外的工作才能将结果返回到相同的数据帧中。
-
我试图展示原始 DataFrame 与预期的不同。