繁体   English   中英

对 Pandas GroupBy 应用不同的聚合

[英]Apply different aggregations to groups of pandas GroupBy

我有一个像

     A     B    C   D
one  2  10.0    0  11
two  5   NaN  NaN   8

并与

df.groupby(np.array(['min', 'max', 'min', 'max']), axis=1)

现在我想聚合具有不同功能的组。 'min' 组应与.sum(axis=1)聚合,而 'max' 组应与.sum(axis=1, skipna=False)聚合。 所需的输出将是

     min  max
one    2   21
two    5  NaN

有没有内置的方法来做到这一点?

我相信您需要自定义功能,因为它不是built-in

def f(x):
    if x.name == 'min':
        return x.sum(axis=1)
    elif x.name == 'max':
        return x.sum(axis=1, skipna=False)

df = df.groupby(['min', 'max', 'min', 'max'], axis=1).apply(f)
print (df)
      max  min
one  21.0  2.0
two   NaN  5.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM