如何对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
相关产品推荐
相关产品推荐

