我有一个类似的数据框
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
有没有内置的方法可以做到这一点?
最佳答案
我相信您需要自定义函数,因为它不是内置
:
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
关于python - 将不同的聚合应用于 pandas GroupBy 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64752128/