【问题标题】:how to find the sum of the n largest values by group of values in a pandas dataframe?如何通过熊猫数据框中的值组查找 n 个最大值的总和?
【发布时间】:2020-03-18 00:20:56
【问题描述】:

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

【问题讨论】:

    标签: python pandas dataframe pandas-groupby


    【解决方案1】:

    试试这个表达式:

    df.groupby('grps').apply(lambda x: x.vals.nlargest(3).sum())
    

    【讨论】:

      【解决方案2】:

      apply 的替代方案:

      df.groupby('grps')['vals'].nlargest(3).sum(level=0)
      

      【讨论】:

        猜你喜欢
        • 2020-05-26
        • 2017-07-25
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 2020-03-26
        • 2019-01-16
        • 2017-04-19
        相关资源
        最近更新 更多