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

如何在Pandas中按相邻时间戳间隔小于1秒分组数据?

解决方法

核心思路是通过相邻时间戳的差值判断分组边界,生成自定义分组标签后再进行聚合,具体步骤如下:

1. 准备示例数据

先构造符合需求的测试数据(Timestamp列需为datetime64类型):

import pandas as pd

timestamps = pd.to_datetime([
    '2024-01-01 00:00:01.1', '2024-01-01 00:00:01.8',
    '2024-01-01 00:00:02.4', '2024-01-01 00:00:05.0',
    '2024-01-01 00:00:05.9', '2024-01-01 00:00:09.0'
])
df = pd.DataFrame({'Timestamp': timestamps, 'Value': [1, 2, 3, 4, 5, 6]})

2. 生成自定义分组标签

计算相邻时间戳的秒级差值,标记需要开启新分组的位置,再通过累加得到唯一分组ID:

# 计算相邻时间戳的秒数差
time_diff = df['Timestamp'].diff().dt.total_seconds()
# 标记新分组起始:差值≥1秒 或 第一行
new_group = time_diff >= 1
new_group.iloc[0] = True  # 第一行强制作为第一个分组的起点
# 生成连续的分组ID
group_ids = new_group.cumsum()

3. 分组聚合并设置目标索引

按生成的分组ID聚合,指定每组的第一个Timestamp作为结果索引,同时按需处理其他列的聚合逻辑:

# 分组聚合,这里以求和Value列为例,可根据需求替换agg内的逻辑
result = df.groupby(group_ids).agg(
    Timestamp=('Timestamp', 'first'),
    Total_Value=('Value', 'sum')
).set_index('Timestamp')

print(result)

输出结果:

Total_Value
Timestamp                       
2024-01-01 00:00:01.1          6
2024-01-01 00:00:05.0          9
2024-01-01 00:00:09.0          6

关键说明

  • 该方法完全基于相邻行的时间差判断分组,不受固定时间边界限制,完美匹配需求中的分组逻辑。
  • 如果Timestamp列不是datetime类型,需要先通过pd.to_datetime()转换。
  • 聚合逻辑可根据实际需求调整,比如替换sum为mean、max或自定义函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:40