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

如何按条件删除Pandas DataFrame中各评论组的最高分对应行?

删除DataFrame分组内score最高的行

你已经通过groupby('review_num')['score'].idxmax()定位到了每个分组中score最高的行的索引,接下来可以用两种方式完成删除操作:

方法1:直接删除定位到的索引

利用Pandas的drop()方法,传入你得到的索引列表即可:

token_max_score = df.groupby('review_num', sort=False)['score'].idxmax()
# 生成新的DataFrame(不修改原数据)
df_filtered = df.drop(token_max_score)
# 或者原地修改原DataFrame
# df.drop(token_max_score, inplace=True)

这种方法适合每个分组只有一个score最大值的场景,idxmax()会返回每个分组中第一个出现最大值的行索引。

方法2:删除分组内所有score等于最大值的行

如果存在同一分组内多个行score同为最大值的情况,上面的方法只会删除第一个最大值行。要删除所有最大值行,可以结合transform()和布尔索引:

# 计算每个分组的score最大值,并映射到每一行
group_max = df.groupby('review_num')['score'].transform('max')
# 过滤掉score等于分组最大值的行
df_filtered = df[df['score'] != group_max]

验证结果

执行上述代码后,你可以通过print(df_filtered)查看处理后的数据,确认每个分组内score最高的行已被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:14