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

如何按条件筛选Pandas DataFrame行:保留各类别Top3成员

保留Pandas DataFrame每个类别最多前3个成员

需求说明

现有一个已按类别分组、并依据分数排序的Pandas DataFrame,需要保留每个类别中最多前3个成员;若某类别成员数量不足3个,则保留该类别全部成员。

原数据与初始DataFrame

import pandas as pd

data = [['Tom', 'A', 10], ['Jack', 'A', 9], ['Andy', 'A', 8],
        ['Lily', 'A', 7], ['Johan', 'B', 10], ['Ewa', 'B', 9]]

df = pd.DataFrame(data, columns=['Name', 'Category', 'Score'])

原DataFrame表格:

NameCategoryScore
TomA10
JackA9
AndyA8
LilyA7
JohanB10
EwaB9

解决方案

直接使用groupby()按Category分组,再调用head(3)即可实现需求:

# 保留每个类别最多前3个成员
result_df = df.groupby('Category').head(3)

结果验证

执行上述代码后得到的DataFrame如下:

NameCategoryScore
TomA10
JackA9
AndyA8
JohanB10
EwaB9

原理说明

  • groupby('Category')将DataFrame按类别分组;
  • head(3)会为每个分组提取前3行数据,若分组内的行数不足3,则直接保留该分组的全部行,完全匹配需求。

内容的提问来源于stack exchange,提问作者Wenjie Yu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:20:12