熊猫聚合分组依据以获得特定值

时间:2020-10-05 20:53:48

标签: python pandas

如果我有下表,

ID#    dispute_amt   year   month
1234   12.50         2019   3
1234   4.00          2019   3
5678   100           2020   5

我希望所需的表格如下

ID#    dispute_count dispute_amt   year   month
1234   2             16            2019   3
5678   1             100           2020   5

顶部的当前表格具有重复的ID#,每月/每年都有多个争议。我想将其汇总为唯一的ID#,然后能够每月/每年计算每个ID#的所有争议。我想我需要在这里使用某种groupby运算符,但是我不知道如何使用python / pandas来真正做到这一点。

这里的任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

使用groupby().agg()

 df.groupby(['ID#', 'year', 'month']).agg(dispute_count =('dispute_amt','count')\
,dispute_amt=('dispute_amt','sum')).reset_index()

    ID#  year  month  dispute_count  dispute_amt
0  1234  2019      3              2         16.5
1  5678  2020      5              1        100.0

答案 1 :(得分:0)

由于您写过要每月汇总ID,因此您可以按ID分组并重置索引

 df
 .groupby(['ID#','year','month')['dispute_amt']
 .count().reset_index(name='dispute_count')