Pandas按组汇总两列

7 投票
3 回答
19264 浏览
提问于 2025-04-18 18:46

这是一个初学者的问题。看起来这应该是个简单的操作,但我从文档中找不到答案。

我有一个数据框(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 个回答

0

这是对 .agg() 函数的一种变体;它可以做到以下几点:(1) 保持数据框的类型不变,(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" })
1

你可以这样做

data.groupby(by=['account_ID'])['purchases'].sum()
11

你只需要在一个 groupby 对象上调用 sum 方法就可以了:

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

想要了解更多例子,可以查看 文档

撰写回答