Python 将不同的聚合应用于GroupBy的组
我有一个像Python 将不同的聚合应用于GroupBy的组,python,pandas,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
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
df.groupby(['min','max','min','max'],axis=1)正确吗?
对我有用,但我会澄清它。