2018年熊猫世界杯数据集目标差异

时间:2018-07-25 08:19:14

标签: python pandas dataframe

我有一个来自kaggle的2018年世界杯数据集。 World Cup Fifa statistics

在此数据集中,每一行不代表比赛,而是代表球队及其在比赛中的得分。

例如:

World Cup, fifa-2018-match-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()

感谢您的答复。

2 个答案:

答案 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"]