我需要按应用程序ID分组.然后,在单独的行中比较组内的两个时间戳,并创建布尔序列"USER_REJECTS".USER_REJECTS应指示REJECTED_TIME==SELECTED_TIME(在组内的任何其他行上).

数据集有数百万行和100多个变量,而Applications_ID每个有15-25行,因此效率是一个因素.

示例数据

application_id id creation_timestamp selected_time rejected_time
69c0 7 2023-11-20 05:32:26.691008 2023-11-20 05:32:26.691008 2023-11-21 08:30:20.881008
69c0 15 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691008
69c0 14 2023-11-20 05:32:26.691008 NaT 2023-12-04 05:32:26.691008
69c0 9 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691010
69c0 18 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691011
69c0 6 2023-11-20 05:32:26.691008 2023-11-21 08:30:20.881008 NaT
69c0 19 2023-11-20 05:32:26.691008 NaT 2023-12-11 05:32:26.691008
db26 11 2023-08-01 10:40:48.473828 2023-08-01 10:40:48.473828
db26 12 2023-08-01 10:40:48.473828 2023-08-01 10:40:48.473828

预期yields

application_id id creation_timestamp selected_time rejected_time user_rejects
69c0 7 2023-11-20 05:32:26.691008 2023-11-20 05:32:26.691008 2023-11-21 08:30:20.881008 1
69c0 15 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691008 0
69c0 14 2023-11-20 05:32:26.691008 NaT 2023-12-04 05:32:26.691008 0
69c0 9 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691010 0
69c0 18 2023-11-20 05:32:26.691008 NaT 2023-12-20 05:32:26.691011 0
69c0 6 2023-11-20 05:32:26.691008 2023-11-21 08:30:20.881008 NaT 0
69c0 19 2023-11-20 05:32:26.691008 NaT 2023-12-11 05:32:26.691008 0
db26 11 2023-08-01 10:40:48.473828 2023-08-01 10:40:48.473828 0
db26 12 2023-08-01 10:40:48.473828 2023-08-01 10:40:48.473828 0

推荐答案

在第一步中将列转换为日期时间,然后在lambda函数中按组与Series.isin进行比较:

cols = ['selected_time','rejected_time']
df[cols] = df[cols].apply(pd.to_datetime, errors='coerce')

f = lambda x: x['rejected_time'].isin(x['selected_time'].dropna())
df['user_rejects'] = df.groupby('application_id', group_keys=False).apply(f).astype(int)

Python相关问答推荐

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

抓取rotowire MLB球员新闻并使用Python形成表格

如何让程序打印新段落上的每一行?

Julia CSV for Python中的等效性Pandas index_col参数

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

为什么我的sundaram筛这么低效

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

为什么Python内存中的列表大小与文档不匹配?

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

python的文件. truncate()意外地没有截断'

为罕见情况下的回退None值键入

如何为需要初始化的具体类实现依赖反转和接口分离?

Pandas数据框上的滚动平均值,其中平均值的中心基于另一数据框的时间

如何计算Pandas 中具有特定条件的行之间的天差

为什么这个正则表达式没有捕获最后一次输入?

Sknowled线性回归()不需要迭代和学习率作为参数

极地数据帧:ROLING_SUM向前看

跨两个数据帧收集非索引列上的公共组

将多行数据循环到嵌套框架中的单行