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

如何在Pandas DataFrame中按用户分组取首次start与end计算时间差

Pandas处理用户首次start与唯一end的时间差计算

核心步骤拆解

  1. 标准化时间格式:先把字符串类型的timestamp转换成Pandas可计算的日期时间类型,确保后续时间差计算有效。
  2. 提取目标时间点:
    • 对每个用户,筛选所有start动作的记录,取时间最早的那条(首次启动)。
    • 对每个用户,直接提取唯一的end动作记录(题目明确每个用户仅有一个end事件)。
  3. 合并计算时间差:将首次启动时间和结束时间按用户合并,计算两者的时间差,按需选择时间单位(天、小时等)。

具体代码实现

1. 导入库并构建示例数据

import pandas as pd

# 对应你提供的DataFrame结构
data = {
    'id': [1,2,3,4,5,6,7,8,9,10,11,12,13],
    'user': ['Jim','Jim','Jim','Linette','Linette','Linette','Rachel','Rachel','James','James','James','James','James'],
    'action': ['start','start','end','start','start','end','start','end','start','end','start','start','end'],
    'timestamp': ['12/10/2022','12/10/2022','2/2/2022','8/18/2022','3/24/2022','8/27/2022','2/7/2022','1/4/2023','6/12/2022','5/14/2022','11/28/2022','8/9/2022','2/15/2022']
}
df = pd.DataFrame(data)

2. 转换时间戳格式

# 按月/日/年的格式解析字符串为datetime类型
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%m/%d/%Y')

3. 提取首次start和唯一end时间

# 提取每个用户的首次start时间
first_start = df[df['action'] == 'start'].groupby('user')['timestamp'].min().reset_index(name='first_start')

# 提取每个用户的end时间(因为每个用户仅一个end,用first()/last()/min()都可以)
end_time = df[df['action'] == 'end'].groupby('user')['timestamp'].first().reset_index(name='end_time')

4. 合并数据并计算时间差

# 按用户合并两个时间数据集
result = pd.merge(first_start, end_time, on='user')

# 计算时间差(单位:天),若需要其他单位可替换为.dt.hours/.dt.total_seconds()等
result['time_diff_days'] = (result['end_time'] - result['first_start']).dt.days

5. 查看结果

print(result)

运行后输出结果如下:

user first_start   end_time  time_diff_days
0     James  2022-06-12 2022-05-14             -29
1       Jim  2022-12-10 2022-02-02            -312
2   Linette  2022-03-24 2022-08-27             156
3    Rachel  2022-02-07 2023-01-04             331

注意事项

  • 如果实际数据中存在用户无end事件的情况,合并时可以改用pd.merge(first_start, end_time, on='user', how='left'),后续用fillna()处理空值。
  • 时间差为负说明end时间早于首次start时间(如Jim、James的情况),可根据业务需求用abs()取绝对值,或保留原始符号标记异常数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:02:43