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

基于条件计算DataFrame中首次任务完成与访问完成的时间差

Pandas 计算分组首次任务完成时间与访问完成时间的小时差

处理步骤

  1. 转换时间格式:先将Task Completed和Access Completed列从字符串转为Pandas datetime类型,这是时间计算的前提。针对百万级数据,指定时间格式能大幅提升转换效率。
  2. 分组聚合:按ID、Category、Site分组,提取每组中最早的Task Completed时间(即最小值),同时提取每组固定的Access Completed时间(取组内任意值即可,这里用first)。
  3. 计算时间差:用首次任务完成时间减去访问完成时间,将时间差转换为小时数,最后整理成目标格式。

代码实现

import pandas as pd

# 假设你的DataFrame名为df,先处理时间列(指定格式加速转换)
df['Task Completed'] = pd.to_datetime(df['Task Completed'], format='%m/%d/%y %I:%M:%S%p')
df['Access Completed'] = pd.to_datetime(df['Access Completed'], format='%m/%d/%y %I:%M:%S %p')

# 分组聚合计算
result = df.groupby(['ID', 'Category', 'Site']).agg(
    first_task=('Task Completed', 'min'),
    access_time=('Access Completed', 'first')
).reset_index()

# 计算小时差
result['Time Difference'] = (result['first_task'] - result['access_time']).dt.total_seconds() / 3600

# 保留需要的列并转换为整数格式
result = result[['ID', 'Category', 'Site', 'Time Difference']].astype({'Time Difference': int})

print(result)

输出结果

运行代码后将得到与预期一致的结果:

IDCategorySiteTime Difference
1AX1
1AY24
1BX1
2AX1

性能优化提示

针对百万级行的DataFrame,上述方法效率优异:

  • 指定format参数的pd.to_datetime避免了Pandas自动推断格式的额外开销
  • groupby.agg是Pandas原生高效分组聚合操作,适配大数据量场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:15:42