【问题标题】:Get Max aggregations for multiple columns in pandas groupby object获取熊猫 groupby 对象中多列的最大聚合
【发布时间】:2019-08-30 11:19:58
【问题描述】:

我有一个数据框,想按一列“公司”进行分组并聚合多列,然后找到每个聚合列的最大值的公司。

  Company   performed    Requests     Request_Id  Num_of_refunds
0  A         7             60          U9             3
1  A         90            6           U10            2
2  B         89            6           ZX9            10
3  B         2             3           OOF            9         
4  B         22            0           LQI            4 
5  D         7             5           QW             3
6  D         87            2           XB             5

我想使用具有多个聚合的 groupby 总和“执行”、“请求”、“Num_of_refunds”和 计数“Request_Id”

我想要返回每个 sum 和 count 聚合的最大值的公司名称

performed    Requests     Request_Id  Num_of_refunds
 max          max          max           max
 B: 103       A: 66        B: 3          B: 23

【问题讨论】:

    标签: python pandas aggregate-functions pandas-groupby


    【解决方案1】:

    您可以将GroupBy.aggsum 一起使用,如果是数字列,count 如果是字符串,则通过DataFrame.idxmax 的最大值获取Company 并与max 合并,转换为strings,最后一个如果必要将Series 转换为一行DataFrameSeries.to_frame 并转置:

    f = lambda x: x.sum() if np.issubdtype(x.dtype, np.number) else x.count()
    df1 = df.groupby('Company').agg(f)
    print (df1)
             performed  Requests  Request_Id  Num_of_refunds
    Company                                                 
    A               97        66           2               5
    B              113         9           3              23
    D               94         7           2               8
    
    df2 = (df1.idxmax() + ': ' + df1.max().astype(str)).to_frame().T
    print (df2)
      performed Requests Request_Id Num_of_refunds
    0    B: 113    A: 66       B: 3          B: 23
    

    【讨论】:

    • 我收到 NotImplementedError:不支持 0 以外的轴
    • @TH14 - 你的熊猫版本是什么?
    • 我在 python 3.7 和 pandas '0.23.4' 上运行
    • @TH14 - 是DataFrame.T - 转置函数
    • 哦,好棒。
    【解决方案2】:
    df.groupby(['Company']).agg({'performed':'sum'
        , 'Requests':'sum'
        , 'Num_of_refunds':'sum'
        ,'Request_Id':'count'})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2019-02-24
      • 2023-02-25
      • 2021-03-21
      • 2020-07-18
      • 2019-09-18
      • 2015-03-03
      相关资源
      最近更新 更多