Python Pandas按group分组,移除满足指定条件的分组
解决方法
你的初始代码仅处理了day的单一条件,未结合result的判断逻辑。我们需要调整分组过滤规则,只保留分组内不存在任何满足day <=1 且 result == 'yes'的行的组别。
正确代码实现
import pandas as pd # 构造示例数据 data = { 'group': [1,1,1,1,2,2,2,2,3,3,3,3], 'day': [-1,1,22,56,-1,1,22,56,-1,1,22,56], 'result': ['yes','no','yes','no','no','yes','no','yes','no','no','yes','yes'] } df = pd.DataFrame(data) # 分组过滤逻辑 filtered_df = df.groupby('group').filter( lambda x: ~((x['day'] <= 1) & (x['result'] == 'yes')).any() ) print(filtered_df)
代码逻辑说明
(x['day'] <=1) & (x['result'] == 'yes'):为分组内每行生成布尔标记,判断是否符合"day≤1且result为yes"的过滤触发条件。.any():检查当前分组中是否存在至少一行满足上述触发条件。~:对结果取反,仅保留没有触发条件行的分组。
运行后输出结果与预期一致:
group day result 8 3 -1 no 9 3 1 no 10 3 22 yes 11 3 56 yes
内容的提问来源于stack exchange,提问作者smgds
相关产品推荐
相关产品推荐

