This question already has answers here:
Pandas groupby nlargest sum

(2个答案)


4年前关闭。




我有一个这样的数据框:
    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

我想对每个州的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

但是,当我在上述代码中添加.sum()操作时,会收到以下输出。
    In[]: df.groupby(['STNAME'])['COUNTY_POP'].nlargest(3).sum()
    Out[]:
    1350

我是Python和Pandas的新手。如果有人能解释造成这种情况的原因以及如何纠正它,我将非常感激!

最佳答案

那是你要的吗?

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

关于python - 如何对groupby中的nlargest()整数求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40517350/

10-12 18:45