我有一个来自kaggle的2018年世界杯数据集。 World Cup Fifa statistics
在此数据集中,每一行不代表比赛,而是代表球队及其在比赛中的得分。
例如:
如何从此数据集中计算每个团队的目标差。我的意思是有没有更简单的方法或熊猫技巧。
我的计算是这样
goal_diff = {}
teams = df["Team"].unique()
for t in teams:
goal_diff[t] = df[df["Team"] == t]["Goal Scored"].sum() \
- df[df["Opponent"] == t]["Goal Scored"].sum()
感谢您的答复。
答案 0 :(得分:3)
您可以通过GroupBy.sum
进行汇总,减去并最后转换为dict
:
goal_diff = ((df.groupby('Team')["Goal Scored"].sum() -
df.groupby('Opponent')["Goal Scored"].sum()).to_dict())
print (goal_diff)
{'Argentina': -3, 'Australia': -3, 'Belgium': 10,
'Brazil': 5, 'Colombia': 3, 'Costa Rica': -3,
'Croatia': 5, 'Denmark': 1, 'Egypt': -4,
'England': 4, 'France': 8, 'Germany': -2,
'Iceland': -3, 'Iran': 0, 'Japan': -1,
'Korea Republic': 0, 'Mexico': -3, 'Morocco': -2,
'Nigeria': -1, 'Panama': -9, 'Peru': 0,
'Poland': -3, 'Portugal': 0, 'Russia': 4,
'Saudi Arabia': -5, 'Senegal': 0, 'Serbia': -2,
'Spain': 1, 'Sweden': 2, 'Switzerland': 0,
'Tunisia': -3, 'Uruguay': 4}
答案 1 :(得分:0)
如果将按团队划分的目标得分相加,您将获得该团队得分的目标数。如果您将对手的进球得分分组加总,您将获得该团队获得的进球数。总目标差异就是它们之间的差异。
df.groupby("Team").sum()["Goal Scored"] - df.groupby("Opponent").sum()["Goal Scored"]