我正在尝试在Pandas中同时使用groupby
、nlargest
和sum
函数,但是无法使其正常运行。
State County Population
Alabama a 100
Alabama b 50
Alabama c 40
Alabama d 5
Alabama e 1
...
Wyoming a.51 180
Wyoming b.51 150
Wyoming c.51 56
Wyoming d.51 5
我想使用 groupby
按州选择,然后按人口获取前两个县。 然后仅使用这些顶部2个县的人口数字来为该州获得总和。最终,我将拥有一个列表,其中包含州和其前两个县的人口。
我可以让
groupby
和 nlargest
工作,但是获取 nlargest(2)
的总和是一项挑战。我现在有的代码行只是:
df.groupby('State')['Population'].nlargest(2)
df.groupby('State')['Population'].nlargest(2).sum(level=0)
来替换 apply 方法即可解决该问题。请注意不要改变原本的意思。 - cs95.nlargest(2).sum(level=0)
实际上比使用apply
更慢。在sum
中使用的level
关键字参数在幕后执行第二个分组操作,我猜这就是额外开销的来源。 - rootAlabama;e;2
和Alabama;e;39
?那么会考虑e
而不是c
吗? - Koray Tugay