You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas分组后获取每组中重复次数Top N的类别?

解决每个回合分组取Top N问题类别的方法

你当前的代码里,data.groupby(['Round']).Category.value_counts()会生成一个带多级索引(Round + Category)的Series,其中每个Round分组内的Category已经按出现次数降序排列了。但直接调用.head(n)只会取整个结果的前n条,而非每个分组的前n条。

有两种简单的解决方式:

方法一:利用多级索引的分组取数

因为value_counts()返回的结果索引是Round(一级)和Category(二级),可以直接按一级索引分组后取每个组的前n条:

data.groupby(['Round']).Category.value_counts().groupby(level=0).head(n)

方法二:在分组内直接应用head(n)

通过apply在每个Round分组内部先统计类别频次,再取前n个:

data.groupby('Round').apply(lambda g: g['Category'].value_counts().head(n))

如果需要把结果整理成普通的DataFrame格式(而非多级索引),可以再加一步.reset_index(name='Count'),比如:

data.groupby(['Round']).Category.value_counts().groupby(level=0).head(n).reset_index(name='Count')

内容的提问来源于stack exchange,提问作者Konrad Lubelski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:01:30