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

如何计算每个用户各日志与该用户首条日志的时间差?

计算用户每条日志与首条日志的时间差

解决步骤

  • 先确保日期列是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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:15:36