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比较陌生.如果有人能解释是什么原因以及如何纠正它,我真的很感激!
那是你要的吗?
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)