如何将列值求和成新的df

时间:2019-02-17 13:57:18

标签: pandas

我对pandas / python和整体编码还很陌生。因此我遇到了一个关于用熊猫编码列总和的问题。

我有一个关于过去足球比赛成绩的306x7数据框。现在,我想总结每个俱乐部的主队进球数和客场进球数,并将其放入一个新的数据框(18个俱乐部的18行和2个本赛季的进球和离队进球列)。

有人可以给我一个如何进行的想法吗?

teams = Liga2['HomeTeam'].unique()

df = pd.DataFrame(index=teams, columns=['FTHG','FTAG'])

for team in teams:
    df.loc[team, 'FTHG'] = [Liga2.HomeTeam == team].FTHG.sum()
    df.loc[team, 'FTAG'] = [Liga2.AwayTeam == team].FTHG.sum()

错误:


AttributeError                            Traceback (most recent call last)
<ipython-input-12-a1b735dbadf3> in <module>
      4 
      5 for team in teams:
----> 6     df.loc[team, 'FTHG'] = [Liga2.HomeTeam == team].FTHG.sum()
      7     df.loc[team, 'FTAG'] = [Liga2.AwayTeam == team].FTHG.sum()

AttributeError: 'list' object has no attribute 'FTHG'

这是df:

https://imgur.com/a/4bKrYRz

谢谢你的想法。

1 个答案:

答案 0 :(得分:0)

最简单的思考方式(无分组方式)是创建一个唯一的球队名单和一个拥有主场和客场进球的df,然后为每个团队添加主场和客场进球的总数。

groupby

有了# create the groupby sums, where the team name is the index home = liga2.groupby('HomeTeam').sum()['FTHG'] away = liga2.groupby('AwayTeam')['FTAG'].sum() # concat them as columns in a df df = pd.concat( [home, away],axis=1 ) ,您所需要做的就是:

ec2:VolumeSize