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

如何在Pandas中删除含STATUS=0的SCU_KEY对应的所有行

Pandas按分组规则过滤行实现代码

实现方法1:groupby + filter(逻辑直观,适合中小数据集)

直接通过分组过滤规则匹配需求,代码如下:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'SCU_KEY': [3, 3, 3, 5, 5, 5, 5, 5, 16, 16, 16],
                   'STATUS' : [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]})

# 核心处理逻辑:仅保留分组内所有STATUS都不为0的SCU_KEY对应的所有行
df = df.groupby('SCU_KEY').filter(lambda group: (group['STATUS'] != 0).all())

运行后得到的df和期望的df_2完全一致。

实现方法2:groupby + transform(性能更优,适合大数据集)

如果数据量较大,用transform生成布尔索引再过滤的性能会更好,代码如下:

import pandas as pd

df = pd.DataFrame({'SCU_KEY': [3, 3, 3, 5, 5, 5, 5, 5, 16, 16, 16],
                   'STATUS' : [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]})

# 生成每行对应SCU_KEY分组是否符合保留条件的布尔索引
keep_mask = df.groupby('SCU_KEY')['STATUS'].transform(lambda x: (x != 0).all())
df = df[keep_mask]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:03