Pandas按两列分组并求和

7

初学者问题。这似乎应该是一个直接的操作,但我从阅读文档中无法理解。

我的df具有以下结构:

|integer_id|int_field_1|int_field_2|

integer_id这一列是非唯一的,所以我想按照integer_id对数据框进行分组,并对两个字段求和。

相应的SQL语句如下:

SELECT integer_id, SUM(int_field_1), SUM(int_field_2) FROM tbl
GROUP BY integer_id

有没有最简单的方法来实现这个?

编辑:包括输入/输出

Input:  
integer_id  int_field_1 int_field_2   
2656        36          36  
2656        36          36  
9702        2           2  
9702        1           1  

使用df.groupby('integer_id').sum()进行输出:
integer_id  int_field_1 int_field_2  
2656        72          72  
9702        3           3  
3个回答

11

您只需在 groupby 对象上调用 sum 方法即可:

df.groupby('integer_id').sum()

参见文档获取更多示例。


只是稍微补充一下,因为我的情况略微复杂:如果您想按多个字段分组,则唯一的区别是 df.groupby(['field1', 'field2']).sum() - Herms

1
你可以做到。
data.groupby(by=['account_ID'])['purchases'].sum()

0
一种变体的 .agg() 函数;提供了以下功能:(1) 持久化类型 DataFrame,(2) 应用平均值、计数、求和等操作,(3) 在保持易读性的同时对多个列进行分组。
df.groupby(['att1', 'att2']).agg({'att1': "count", 'att3': "sum",'att4': 'mean'})

使用您的值...

df.groupby(['integer_id']).agg({'int_field_1': "sum", 'int_field_2': "sum" })

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