将不同的聚合应用于熊猫GroupBy

时间:2020-11-09 12:58:11

标签: python pandas

我有一个类似的数据框

     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)

现在,我想汇总具有不同功能的组。 “最小”组应与.sum(axis=1)聚合,而“最大”组应与.sum(axis=1, skipna=False)聚合。 所需的输出将是

     min  max
one    2   21
two    5  NaN

有内置的方法吗?

1 个答案:

答案 0 :(得分:2)

我相信您需要自定义功能,因为它不是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