[英]Apply different aggregations to groups of pandas GroupBy
我有一个像
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)
现在我想聚合具有不同功能的组。 'min' 组应与.sum(axis=1)
聚合,而 'max' 组应与.sum(axis=1, skipna=False)
聚合。 所需的输出将是
min max
one 2 21
two 5 NaN
有没有内置的方法来做到这一点?
我相信您需要自定义功能,因为它不是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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.