Pandas Groupby两列之和,并在中创建新的数据帧

Pandas Groupby两列之和,并在中创建新的数据帧,pandas,pandas-groupby,Pandas,Pandas Groupby,我有一个如下所示的数据帧 Player Goal Freekick Messi 2 5 Ronaldo 1 4 Messi 1 4 Messi 0 5 Ronaldo 0 9 Ronaldo 1 8 Xavi 1 1 Xavi 0 7 从上面我

我有一个如下所示的数据帧

Player       Goal      Freekick
Messi        2         5
Ronaldo      1         4
Messi        1         4
Messi        0         5
Ronaldo      0         9
Ronaldo      1         8
Xavi         1         1
Xavi         0         7
从上面我想做的目标和任意球如下所示的总和分组

预期产出:

Player     toatal_goals      total_freekicks
Messi      3                 14
Ronaldo    2                 21
Xavi       1                 8
我尝试了以下代码:

df1 = df.groupby(['Player'])['Goal'].sum().reset_index().rename({'Goal':'toatal_goals'})
df1['total_freekicks'] = df.groupby(['Player'])['Freekick'].sum()

但是上面的一个不起作用,请帮助我..

首先通过
Player
聚合
sum
,然后将列名转换为小写:

df = df.groupby('Player').sum().add_prefix('total_').rename(columns=str.lower)
print (df)
         total_goal  total_freekick
Player                             
Messi             3              14
Ronaldo           2              21
Xavi              1               8

可以使用namedagg创建具有自定义列名的聚合

(
    df.groupby(by='Player')
    .agg(toatal_goals=('Goal', 'sum'),
         total_freekicks=('Freekick', 'sum'))
    .reset_index()
)

Player     toatal_goals      total_freekicks
Messi      3                 14
Ronaldo    2                 21
Xavi       1                 8

@jezrael是的,抱歉,我会在尝试输出中更正它