如何计算每个用户各日志与该用户首条日志的时间差?
计算用户每条日志与首条日志的时间差
解决步骤
- 先确保日期列是
datetime类型,否则无法进行时间差运算 - 通过
groupby结合transform('first')提取每个用户的首条日志时间,再与每行日期做差值计算
完整代码示例
import pandas as pd # 构造示例数据(匹配你提供的日志结构) data = { 'ID': ['00000021601', '00000021601', '00000031313', '00000031313', '00000031313', '00000065137', '00000065137'], 'DATE': ['2022-08-23 17:12:04', '2022-08-23 17:12:04', '2022-10-22 11:16:57', '2022-10-22 12:16:44', '2022-10-22 14:39:07', '2022-05-06 11:51:33', '2022-05-06 11:51:33'] } df = pd.DataFrame(data) # 转换日期列为datetime类型 df['DATE'] = pd.to_datetime(df['DATE']) # 计算每条日志与用户首条日志的时间差 df['DELTA_FROM_FIRST'] = df['DATE'] - df.groupby('ID')['DATE'].transform('first') print(df)
输出结果
ID DATE DELTA_FROM_FIRST 0 00000021601 2022-08-23 17:12:04 00:00:00 1 00000021601 2022-08-23 17:12:04 00:00:00 2 00000031313 2022-10-22 11:16:57 00:00:00 3 00000031313 2022-10-22 12:16:44 00:59:47 4 00000031313 2022-10-22 14:39:07 03:22:10 5 00000065137 2022-05-06 11:51:33 00:00:00 6 00000065137 2022-05-06 11:51:33 00:00:00
关键说明
transform('first')会把每个用户组的首条日志时间,填充到该组的所有行中,保证和原DataFrame的行数完全对齐,这样就能直接做时间差运算。- 时间差结果为
timedelta类型,若需要转换成秒/分钟等数值格式,可使用df['DELTA_SECONDS'] = df['DELTA_FROM_FIRST'].dt.total_seconds()。
内容的提问来源于stack exchange,提问作者luka1156
相关产品推荐
相关产品推荐

