将不同的聚合函数应用于pandas GroupBy分组

3

我有一个像这样的数据框

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

并使用groupby进行分组

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

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


df.groupby(['min', 'max', 'min', 'max'], axis=1) 正确吗? - jezrael
它对我有效,但我会澄清一下。 - Credics
1个回答

3

我认为你需要自定义函数,因为它不是内置的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接