如何在groupby中求和nlargest()整数

IML*_*MLD 5 python group-by dataframe pandas

我有这样的数据帧:

    Index STNAME COUNTY COUNTY_POP
      0     AL     0       100
      1     AL     1       150
      2     AL     3       200
      3     AL     5       50
    ...
     15     CA     0       300
     16     CA     1       200
     17     CA     3       250
     18     CA     4       350
Run Code Online (Sandbox Code Playgroud)

我想对每个州的COUNTY_POP中的三个最大整数求和.到目前为止,我有:

    In[]: df.groupby(['STNAME'])['COUNTY_POP'].nlargest(3)
    Out[]:
    Index STNAME COUNTY COUNTY_POP
      0     AL     0       100
      1     AL     1       150
      2     AL     3       200
    ...
     15     CA     0       300
     17     CA     3       250
     18     CA     4       350
Run Code Online (Sandbox Code Playgroud)

但是,当我将.sum()操作添加到上面的代码时,我收到以下输出.

    In[]: df.groupby(['STNAME'])['COUNTY_POP'].nlargest(3).sum()
    Out[]:
    1350
Run Code Online (Sandbox Code Playgroud)

我对Python和Pandas比较陌生.如果有人能解释是什么原因以及如何纠正它,我真的很感激!

Max*_*axU 6

那是你要的吗?

In [25]: df.groupby('STNAME')['COUNTY_POP'].agg(lambda x: x.nlargest(3).sum())
Out[25]:
STNAME
AL    450
CA    900
Name: COUNTY_POP, dtype: int64
Run Code Online (Sandbox Code Playgroud)