【问题标题】:how to use different aggregate functions for separate columns in pandas? - python如何对熊猫中的不同列使用不同的聚合函数? - Python
【发布时间】:2015-10-15 05:36:48
【问题描述】:

我有这个数据框:

>>> df = pd.DataFrame({'c1':['a','a','a','a','b','b','b','b'], 'c2':['x','y','x','y','x','y','x','y'], 'sum':[1,1,0,1,0,0,1,0], 'mean':[12,14,11,13,12,23,12,31]})

我正在尝试使用两个单独的聚合函数,我知道我可以这样做:

>>> df.groupby(['c1','c2'])['sum','mean'].agg([np.sum,np.mean])
>>> df
              sum        mean
            sum  mean  sum  mean
    c1  c2     
    a   x    1   0.5    23  11.5   
        y    2   1.0    27  13.5
    b   x    1   0.5    24  12.0
        y    0   0.0    54  27.0

但它在sum 中创建了不必要的“平均”列,在mean 中创建了“总和”列。有没有办法达到这个结果:

        sum  mean
c1  c2     
a   x    1   11.5   
    y    2   13.5
b   x    1   12.0
    y    0   27.0

我试过了:

>>> df.groupby(['c1','c2'])['sum','mean'].agg({'sum':np.sum, 'mean':np.mean})

但它会引发KeyError 异常。

【问题讨论】:

    标签: python pandas aggregate-functions


    【解决方案1】:

    您可以使用{column_name: agg_func} 将字典传递给.agg

    df.groupby(['c1', 'c2']).agg({'mean': np.mean, 'sum': np.sum})
    
           sum  mean
    c1 c2           
    a  x     1  11.5
       y     2  13.5
    b  x     1  12.0
       y     0  27.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      相关资源
      最近更新 更多