我有一个有趣的!我试图找到一个重复的问题,但没有成功......
我的数据框由 2013-2016 年的所有美国和领土组成,具有多个属性。
>>> df.head(2)
state enrollees utilizing enrol_age65 util_age65 year
1 Alabama 637247 635431 473376 474334 2013
2 Alaska 30486 28514 21721 20457 2013
>>> df.tail(2)
state enrollees utilizing enrol_age65 util_age65 year
214 Puerto Rico 581861 579514 453181 450150 2016
215 U.S. Territories 24329 16979 22608 15921 2016
我想按年份和州分组,并显示每年的前 3 个州(按“登记者”或“使用”-无关紧要)。
期望输出:
enrollees utilizing
year state
2013 California 3933310 3823455
New York 3133980 3002948
Florida 2984799 2847574
...
2016 California 4516216 4365896
Florida 4186823 3984756
New York 4009829 3874682
到目前为止,我已经尝试了以下方法:
df.groupby(['year','state'])['enrollees','utilizing'].sum().head(3)
这仅产生 GroupBy 对象中的前 3 行:
enrollees utilizing
year state
2013 Alabama 637247 635431
Alaska 30486 28514
Arizona 707683 683273
我也试过一个 lambda 函数:
df.groupby(['year','state'])['enrollees','utilizing']\
.apply(lambda x: np.sum(x)).nlargest(3, 'enrollees')
这产生了 GroupBy 对象中绝对最大的 3:
enrollees utilizing
year state
2016 California 4516216 4365896
2015 California 4324304 4191704
2014 California 4133532 4011208
我认为这可能与 GroupBy 对象的索引有关,但我不确定......任何指导将不胜感激!
忽然笑
相关分类