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

如何在Pandas中按event分组计算首末行的时间差

实现方案

1. 数据预处理与类型转换

首先需要将Date列转换为Pandas的datetime类型,才能进行时间运算:

import pandas as pd

# 构造原始DataFrame
data = {
    'Date': ['2023-04-11 13:42:16', '2023-04-11 14:02:26', '2023-04-11 14:36:09',
             '2023-04-11 14:37:46', '2023-04-11 14:41:34', '2023-04-11 14:46:27', '2023-04-11 14:47:03'],
    'event': ['play', 'play', 'play', 'start', 'start', 'start', 'start']
}
df = pd.DataFrame(data)

# 转换Date列为datetime类型
df['Date'] = pd.to_datetime(df['Date'])

2. 分组计算首尾时间差

按event字段分组,提取每组的日期、计算首尾时间差并格式化:

# 分组处理逻辑
result = df.groupby('event').apply(lambda x: pd.Series({
    'date': x['Date'].dt.date.iloc[0].strftime('%Y-%m-%d'),
    # 计算首尾时间差的总秒数
    'diff_seconds': (x['Date'].iloc[-1] - x['Date'].iloc[0]).total_seconds()
})).reset_index()

# 将秒数转换为HH:MM:SS格式
result['diff'] = pd.to_datetime(result['diff_seconds'], unit='s').dt.strftime('%H:%M:%S')

# 调整列顺序并删除临时列
result = result[['date', 'event', 'diff']]

3. 最终输出结果

运行代码后,result的输出与需求一致:

date  event      diff
0  2023-04-11   play  00:53:52
1  2023-04-11  start  00:09:17

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:15