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

基于日期列条件过滤DataFrame?分组后删除行遇阻

问题解决:保留包含指定状态的用户-日期组所有行

原始数据

UserId     Activity_date     Status  
A            27-01-2022      initiated        
A            27-01-2022      In_process
A            27-01-2022      Success    
A            28-01-2022      initiated  
A            28-01-2022      Completed
A            30-01-2022      initiated
A            30-01-2022      failed
B            26-01-2022      initiated
B            26-01-2022      Completed
B            26-01-2022      Success
B            27-01-2022      initiated

需求

删除同一UserId+Activity_date组中未出现Success或Completed状态的所有条目。即只要某用户的某日期下存在这两个状态之一,该日期的所有行都保留;否则整组删除。

解决方案

核心思路是先标记出符合条件的用户-日期组,再筛选出这些组的所有数据。用pandas的分组+transform方法可以高效实现:

import pandas as pd

# 1. 构造示例数据(已有DataFrame可跳过此步)
data = {
    'UserId': ['A','A','A','A','A','A','A','B','B','B','B'],
    'Activity_date': ['27-01-2022','27-01-2022','27-01-2022','28-01-2022','28-01-2022','30-01-2022','30-01-2022','26-01-2022','26-01-2022','26-01-2022','27-01-2022'],
    'Status': ['initiated','In_process','Success','initiated','Completed','initiated','failed','initiated','Completed','Success','initiated']
}
df = pd.DataFrame(data)

# 2. 对每个用户-日期组,标记是否包含目标状态
df['is_valid'] = df.groupby(['UserId', 'Activity_date'])['Status'].transform(
    lambda x: x.isin(['Success', 'Completed']).any()
)

# 3. 筛选有效组数据并移除临时列
result_df = df[df['is_valid']].drop('is_valid', axis=1)

# 输出结果
print(result_df)

运行结果

UserId Activity_date      Status
0      A    27-01-2022  initiated
1      A    27-01-2022  In_process
2      A    27-01-2022     Success
3      A    28-01-2022  initiated
4      A    28-01-2022   Completed
7      B    26-01-2022  initiated
8      B    26-01-2022   Completed
9      B    26-01-2022     Success

关键步骤说明

  • groupby(['UserId', 'Activity_date']):按用户和日期分组,确保判断的是同一用户同一天的状态集合。
  • x.isin(['Success', 'Completed']).any():检查组内是否存在目标状态,返回布尔值。
  • transform:将组级别的布尔值映射到组内每一行,实现整组数据的筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:05:22