DataFrame有两列 组“ grps”和值“ vals”:
df = pd.DataFrame({'grps': list('aaabbcaabcccbbc'),
'vals': [12,345,3,1,45,14,4,52,54,23,235,21,57,3,87]})
对于每个组,我必须找到三个最大值的总和。 我应该以如下数据框结束:
grps
a 409
b 156
c 345
我已经尝试过了,但是没有用:
df.groupby('grps').nlargest(3, 'vals').sum()
答案 0 :(得分:3)
apply
的替代方法:
df.groupby('grps')['vals'].nlargest(3).sum(level=0)
答案 1 :(得分:2)
尝试以下表达式:
df.groupby('grps').apply(lambda x: x.vals.nlargest(3).sum())