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

基于时间差的行分组:按5秒间隔对Datetime列分组

按5秒时间间隔对Datetime数据分组的实现方案

问题描述

现有一组字符串格式的时间数据,需按以下规则分组:若当前行与下一行的时间差≤5秒,则归为同一组;若时间差>5秒,则下一行开启新的分组编号。

原始数据

import pandas as pd

d = {'dttm' : ['2023-01-30 09:02:42','2023-01-30 09:02:47','2023-01-30 09:02:48','2023-01-30 09:02:59',
               '2023-01-30 09:10:23','2023-01-30 09:10:27','2023-01-30 09:12:36','2023-01-30 09:14:13',
               '2023-01-30 09:14:15','2023-01-30 09:16:12','2023-01-30 09:16:12','2023-01-30 09:16:13']}
dt_data = pd.DataFrame(d)

实现步骤

  1. 转换时间列类型:将字符串格式的dttm列转为pandas的datetime类型,才能进行时间差计算。
  2. 计算相邻行时间差:用diff()方法计算当前行与上一行的时间差,转为秒数后填充首行缺失值。
  3. 标记新分组:判断时间差是否大于5秒,生成新分组的标记。
  4. 生成分组编号:对新分组标记累加后加1,得到从1开始的分组编号。

完整代码

import pandas as pd

d = {'dttm' : ['2023-01-30 09:02:42','2023-01-30 09:02:47','2023-01-30 09:02:48','2023-01-30 09:02:59',
               '2023-01-30 09:10:23','2023-01-30 09:10:27','2023-01-30 09:12:36','2023-01-30 09:14:13',
               '2023-01-30 09:14:15','2023-01-30 09:16:12','2023-01-30 09:16:12','2023-01-30 09:16:13']}
dt_data = pd.DataFrame(d)

# 转换为datetime类型
dt_data['dttm'] = pd.to_datetime(dt_data['dttm'])

# 计算相邻行时间差(秒),填充首行缺失值为0
time_diff = dt_data['dttm'].diff().dt.total_seconds().fillna(0)

# 标记需要开启新分组的行(时间差>5秒)
new_group_flag = time_diff > 5

# 生成分组编号
dt_data['group'] = new_group_flag.cumsum() + 1

最终结果

dttmgroup
2023-01-30 09:02:421
2023-01-30 09:02:471
2023-01-30 09:02:481
2023-01-30 09:02:592
2023-01-30 09:10:233
2023-01-30 09:10:273
2023-01-30 09:12:364
2023-01-30 09:14:135
2023-01-30 09:14:155
2023-01-30 09:16:126
2023-01-30 09:16:126
2023-01-30 09:16:136

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:30:45