如何在熊猫数据框中按值组找到n个最大值的总和?

时间:2020-03-17 16:09:15

标签: python pandas dataframe pandas-groupby

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()

2 个答案:

答案 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())