按照第一列分组并将其他列求和作为新的数据框(Pandas)。

3

i have a pandas dataframe:

id    won    lost  match
v1     1       0     1
v1     2       1     3
v1     0       5     8
v2     3       1     7
v2     5       5     12

我想按ID分组并对其他列求和,以获取一个数据框。
id    total_won    total_lost    total_match
v1      3              6             12
v2      8              6             19

如何使用Pandas的groupby和sum操作来对多列进行求和?我尝试使用以下代码:

pd.groupby('id')['won'].sum()
pd.groupby('id')['lost'].sum()
pd.groupby('id')['match'].sum()

有没有更好的方法来实现这个?

1个回答

4

使用 groupby 不需要定义列 - 将所有数值列聚合到总和,然后使用add_prefix,最后使用reset_index

df1 = df.groupby('id').sum().add_prefix('total_').reset_index()
print (df1)
   id  total_won  total_lost  total_match
0  v1          3           6           12
1  v2          8           6           19

如果需要指定多个列,请添加列的列表

cols = ['won','lost']
df1 = df.groupby('id')[cols].sum().add_prefix('total_').reset_index()
print (df1)
   id  total_won  total_lost
0  v1          3           6
1  v2          8           6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接