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

如何在Pandas中删除分组后目标列最大值小于阈值的所有对应行

解决方法:保留分组后最大值达标的用户全量数据

需求说明

现有Pandas DataFrame包含Name(姓名)和Cumulative items bought(累计购买物品数量)两列,需要删除所有按姓名分组后,该用户累计购买最大值小于10的姓名对应的全部行。

示例数据:

NameCumulative items bought
Nick2
Nick7
Nick11
Jason3
Jason5
Kyle2
Kyle7
Kyle9

目标是保留Nick的全部行,删除Jason和Kyle的所有行。

错误代码分析

你尝试的代码:

df.drop(df[df['Cumulative items bought'] < 10].index)

逻辑错误在于:它是直接删除单条记录中累计购买数小于10的行,而非按用户分组判断最大值。执行后会删掉Nick的前两行(2、7),仅保留11那行,同时删掉Jason、Kyle的所有行,完全不符合你要保留用户全量行的需求。

正确解法

方法1:用transform生成分组最大值列后筛选

# 为每行添加对应用户的累计购买最大值
df['user_max'] = df.groupby('Name')['Cumulative items bought'].transform('max')
# 筛选出最大值≥10的行,再移除临时列
df_result = df[df['user_max'] >= 10].drop('user_max', axis=1)

方法2:先获取有效姓名列表再筛选

# 计算每个用户的累计购买最大值,筛选出最大值≥10的姓名
valid_users = df.groupby('Name')['Cumulative items bought'].max().loc[lambda x: x >= 10].index
# 保留Name在有效列表中的所有行
df_result = df[df['Name'].isin(valid_users)]

两种方法执行后,都会得到仅保留Nick全部3行的结果,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:58:36