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

pandas dataframe如何删除组内特定值出现≥2次的整个分组

Pandas分组删除规则调整实现方案

原有逻辑是判断分组内是否存在任意strawberry行就删组,现在调整为统计分组内strawberry的行数≥2才删组,只需要把原来transform('any')的存在判断替换为计数判断即可。

可用实现代码

方法1:transform+sum计数(性能更优,适合大数据量)

import pandas as pd
d = {'group': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'], 
      'fruit': ['strawberry', 'strawberry', 'strawberry', 'strawberry', 'strawberry', 'kiwi', 'banana', 'strawberry', 'orange', 'kiwi', 'banana', 'melon', 'orange', 'kiwi', 'melon']}
df = pd.DataFrame(data=d)

# 核心逻辑:统计每个分组内strawberry的行数,仅保留行数小于2的分组
res = df[df.fruit.eq('strawberry').groupby(df.group).transform('sum') < 2]
print(res)

输出结果:

group       fruit
5      B        kiwi
6      B      banana
7      B  strawberry
8      B      orange
9      B        kiwi
10     C      banana
11     C       melon
12     C      orange
13     C        kiwi
14     C       melon

方法2:groupby.filter(写法更直观)

如果更习惯分组过滤的写法,可以用filter方法直接按分组规则筛选:

res = df.groupby('group').filter(lambda g: g['fruit'].eq('strawberry').sum() < 2)

两种方法都可以实现保留B组、C组,删除A组的需求,可根据使用习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:27:00