【问题标题】:Pandas group by and sum two columnsPandas 对两列进行分组和求和
【发布时间】:2014-10-21 13:29:31
【问题描述】:

初学者问题。这似乎应该是一个简单的操作,但我无法通过阅读文档来弄清楚。

我有一个具有这种结构的 df:

|integer_id|int_field_1|int_field_2|

integer_id 列是非唯一的,所以我想将 df 按 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  

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您只需要在 groupby 对象上调用 sum

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

    更多示例请参见docs

    【讨论】:

    • 只是补充一点,因为我的情况稍微复杂一些:如果你想按多个字段分组,唯一的区别是df.groupby(['field1', 'field2']).sum()
    【解决方案2】:

    你可以做到的

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

    【讨论】:

      【解决方案3】:

      .agg() 函数的变体;提供以下功能:(1) 持久化类型 DataFrame,(2) 应用平均值、计数、总和等,以及 (3) 在多列上启用 groupby,同时保持易读性。

      df.groupby(['att1', 'att2']).agg({'att1': "count", 'att3': "sum",'att4': 'mean'})
      

      使用你的价值观...

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

      【讨论】:

        猜你喜欢
        • 2015-09-09
        • 2019-01-25
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多