【问题标题】:How to group rows in pandas with sum in the certain column如何在特定列中使用总和对熊猫中的行进行分组
【发布时间】:2021-04-27 00:35:54
【问题描述】:

给定这样的 DataFrame:

A B C D
0 ABC unique_ident_1 10 ONE
1 KLM unique_ident_2 2 TEN
2 KLM unique_ident_2 7 TEN
3 XYZ unique_ident_3 2 TWO
3 ABC unique_ident_1 8 ONE
3 XYZ unique_ident_3 -5 TWO

其中“B”列包含一个唯一的文本标识符,“A”和“D”列包含一些依赖于唯一 ID 的常量文本,C 列有一个数量。我想按唯一标识符(col“B”)对行进行分组,其中数量列由 ident 汇总:

A B C D
0 ABC unique_ident_1 18 ONE
1 KLM unique_ident_2 9 TEN
2 XYZ unique_ident_3 -3 TWO

我怎样才能用 pandas 得到这个结果?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    将命名元组与 groupby 一起使用。

    df1 = df.groupby('B',as_index=False).agg(
        A=('A','first'),
        C=('C','sum'),
        D=('D','first')
    )[df.columns]
    
    
         A               B   C    D
    0  ABC  unique_ident_1  18  ONE
    1  KLM  unique_ident_2   9  TEN
    2  XYZ  unique_ident_3  -3  TWO
    

    【讨论】:

      【解决方案2】:

      你也可以创建一个字典,然后分组以防你有很多列:

      agg_d = {col:'sum' if col=='C' else'first' for col in df.columns}
      out = df.groupby('B').agg(agg_d).reset_index(drop=True)
      

      print(out)
      
           A               B   C    D
      0  ABC  unique_ident_1  18  ONE
      1  KLM  unique_ident_2   9  TEN
      2  XYZ  unique_ident_3  -3  TWO
      

      【讨论】:

      • 非常聪明,不错!
      猜你喜欢
      • 2017-05-01
      • 2021-07-20
      • 2020-01-21
      • 1970-01-01
      • 2019-05-20
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多