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

Pandas按条件筛选行:保留特定日期下状态以success结尾的ID全量数据

解决方案

你可以通过以下步骤实现需求:

  1. 识别出每个(Id, Date)分组中是否包含success状态
  2. 保留所有属于这些符合条件分组的记录

方法一:使用groupby.transform

import pandas as pd

# 构造示例DataFrame
data = {
    'Id': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'Date': ['26-01-2022', '26-01-2022', '27-01-2022', '27-01-2022', '27-01-2022', '01-02-2022', '01-02-2022', '02-02-2022', '02-02-2022'],
    'Status': ['begin', 'failed', 'begin', 'in-process', 'success', 'in-process', 'success', 'begin', 'failed']
}
df = pd.DataFrame(data)

# 标记每个分组是否包含success
df['has_success'] = df.groupby(['Id', 'Date'])['Status'].transform(lambda x: 'success' in x.values)

# 过滤出符合条件的记录并删除辅助列
result = df[df['has_success']].drop('has_success', axis=1)

print(result)

方法二:提取成功分组后合并

# 获取所有包含success的(Id, Date)组合
success_pairs = df[df['Status'] == 'success'][['Id', 'Date']].drop_duplicates()

# 合并原DataFrame与成功分组,保留匹配的记录
result = df.merge(success_pairs, on=['Id', 'Date'])

print(result)

两种方法都会输出你期望的结果:

Id        Date      Status
0  A  27-01-2022       begin
1  A  27-01-2022  in-process
2  A  27-01-2022      success
3  B  01-02-2022  in-process
4  B  01-02-2022      success

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:20:39