我应该计算一下自2010年以来哪个国家在锦标赛中进球最多。到目前为止,我已经成功地通过过滤掉如下友谊来操纵数据帧:
no_friendlies = df[df.tournament != "Friendly"]
然后我将date列设置为索引,以便筛选出2010年之前的所有匹配项:
no_friendlies_indexed = no_friendlies.set_index('date')
since_2010 = no_friendlies_indexed.loc['2010-01-01':]
从这一点开始我就迷路了,因为我不知道如何计算每个国家在主场和客场的进球数
感谢您的帮助/建议
编辑:
样本数据的文本版本:
date home_team away_team home_score away_score tournament city country neutral
0 1872-11-30 Scotland England 0 0 Friendly Glasgow Scotland False
1 1873-03-08 England Scotland 4 2 Friendly London England False
2 1874-03-07 Scotland England 2 1 Friendly Glasgow Scotland False
3 1875-03-06 England Scotland 2 2 Friendly London England False
4 1876-03-04 Scotland England 3 0 Friendly Glasgow Scotland False
5 1876-03-25 Scotland Wales 4 0 Friendly Glasgow Scotland False
6 1877-03-03 England Scotland 1 3 Friendly London England False
7 1877-03-05 Wales Scotland 0 2 Friendly Wrexham Wales False
8 1878-03-02 Scotland England 7 2 Friendly Glasgow Scotland False
9 1878-03-23 Scotland Wales 9 0 Friendly Glasgow Scotland False
10 1879-01-18 England Wales 2 1 Friendly London England False
编辑2:
我刚刚尝试过这样做:
since_2010.groupby(['home_team', 'home_score']).sum()
但它不会返回主队的主场进球总数(如果这样做有效的话,我会重复这样做,让客队得到总进球数)
主队
.groupby
和.sum()
,然后客队也这样做,并将两者相加:输出:
更详细的解释(根据评论):
.groupby
一列home_team
。在你的回答中,你是按['home_team', 'home_score']
分组的。你的目标(不是双关语)是得到home_score
的.sum()
,所以你应该而不是.groupby()
它。如您所见['home_score']
位于我使用.groupby
的部分之后,因此我可以得到它的.sum()
。这让你为主队做好准备李>away_team
执行相同的操作李>home_team
和away_team
组的结果对于国家具有相同的值,您可以简单地将它们相加李>使用^{} 重塑形状。好处是它会自动创建一个
'home_or_away'
指示符,但我们将首先更改列,使它们成为“score\u home”(而不是“home\u score”)所以现在无论是主场还是客场,你都可以得到分数:
相关问题 更多 >
编程相关推荐