Python分组查询:如何仅展示分组计数结果中的最小值行
解决方法:提取分组统计中计数最小的行
我太懂这种“明明感觉应该很简单,但就是卡半天”的滋味了!SQL里确实一句就能搞定,但pandas的逻辑得稍微转个弯。你之前的分组统计已经走对了第一步,接下来只需要在统计结果的基础上锁定计数最小的那一行就行。
分步实现
- 先执行你原来的分组统计,得到每个emotion的计数结果:
count_stats = p2all.groupby(['emotion'])['emotion'].agg(['count'])
- 从这个统计结果里筛选出
count值最小的行:
min_count_result = count_stats.loc[count_stats['count'].idxmin()]
这样就能直接得到你想要的那一行(比如Euphoric对应的658)。
一步到位的写法
如果想把代码合并成一行,也可以用匿名函数来筛选:
p2all.groupby(['emotion'])['emotion'].agg(['count']).loc[lambda df: df['count'] == df['count'].min()]
为什么你之前找到的方法不对?
你提到的p2all.loc[p2all.groupby('emotion').age.idxmin()]是用来提取每个emotion分组中年龄最小的那一行原始数据,而不是统计分组后的计数最小值,所以方向和你要的需求不符啦。
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

