我有一个类似的数据框
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
有内置的方法吗?
答案 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