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

如何对DataFrame分组后删除行数为3且无0值的组?

解决DataFrame分组后删除特定组的问题

需求:对DataFrame执行groupby操作后,删除同时满足以下两个条件的组:

  • 组内行数为3
  • 组内value列不包含0值

原始数据构建

首先还原原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'ID': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'D', 'D', 'D', 'E', 'E', 'E', 'F', 'F'],
    'value': [3, 2, 0, 1, 1, 3, 3, 4, 0, 5, 5, 6, 7, 7, 3, 2]
})

解决方案

使用groupby().filter()方法直接对组进行筛选,保留不符合删除条件的组:

# 筛选逻辑:保留不同时满足「行数为3且无0值」的组
filtered_df = df.groupby('ID').filter(lambda x: not (len(x) == 3 and (x['value'] != 0).all()))

结果验证

运行上述代码后,filtered_df即为期望的结果:

ID  value
A    3
A    2
A    0
B    1
B    1
D    0
D    5
D    5
F    3
F    2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:19