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

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)

代码逻辑说明

  1. (x['day'] <=1) & (x['result'] == 'yes'):为分组内每行生成布尔标记,判断是否符合"day≤1且result为yes"的过滤触发条件。
  2. .any():检查当前分组中是否存在至少一行满足上述触发条件。
  3. ~:对结果取反,仅保留没有触发条件行的分组。

运行后输出结果与预期一致:

group  day result
8      3   -1     no
9      3    1     no
10     3   22    yes
11     3   56    yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:37