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

基于Pandas提取时间戳列每10分钟内的最大时间间隔

解决Pandas按10分钟分组计算最大时间间隔问题

嘿,别着急!刚接触Pandas遇到时间分组的问题太正常了,我一步步给你拆解怎么实现你想要的结果:

第一步:准备数据并确保时间列格式正确

首先得确认你的Timestamp列是Pandas能识别的datetime类型,这是所有时间操作的前提。我们先模拟你的示例数据,然后做格式转换:

import pandas as pd

# 模拟你的示例数据(你可以替换成自己的真实数据)
data = {
    'Timestamp': ['2013-08-14 22:00:00', '2013-08-14 22:00:01', '2013-08-14 22:00:05',
                  '2013-08-14 22:00:07', '2013-08-14 22:00:14', '2013-08-14 22:00:15',
                  '2013-08-14 22:00:16', '2013-08-14 22:00:27', '2013-08-14 22:00:38',
                  '2013-08-14 22:10:02', '2013-08-14 22:10:15', '2013-08-23 22:59:59'],
    'Category': [1]*9 + [0, 0, 0],
    'Class': [1,2,0,1,3,0,1,2,1,1,2,1],
    'Speed': [1,1,1.1,1.2,1.2,1.2,1.2,1.2,1.2,2.1,2.2,2.3]
}

df = pd.DataFrame(data)

# 把Timestamp转换成datetime类型(必须步骤!)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])

第二步:计算相邻时间戳的间隔

用diff()方法计算每行和上一行的时间差,再转成秒数(和你示例结果的单位一致):

# 计算相邻时间的间隔,单位为秒
df['time_gap'] = df['Timestamp'].diff().dt.total_seconds()
# 注意:第一行的间隔是NaN(因为没有前一个时间),后续分组时会自动忽略

第三步:按10分钟窗口分组取最大间隔

用resample()方法按10分钟分组,'10T'是10分钟的缩写,label='left'表示用每个窗口的起始时间作为分组标签(和你期望的结果格式一致):

# 按10分钟分组,计算每个组内的最大时间间隔
result = df.resample('10T', on='Timestamp', label='left')['time_gap'].max().reset_index()

第四步:调整结果格式

最后重命名列名,匹配你想要的输出样式:

# 重命名列
result.rename(columns={'time_gap': 'Max time gap'}, inplace=True)

# 打印结果
print(result)

运行后你会得到类似这样的输出:

Timestamp  Max time gap
0 2013-08-14 22:00:00          11.0
1 2013-08-14 22:10:00          13.0
2 2013-08-14 22:20:00           NaN
...
2158 2013-08-23 22:50:00           NaN

额外小提示

  • 如果你的Timestamp列是DataFrame的索引,那resample时不需要加on='Timestamp',直接写df.resample('10T', label='left')['time_gap'].max()就行。
  • 如果某个10分钟窗口里没有数据,结果会显示NaN,你可以用fillna(0)把这些值替换成0,或者根据需求处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:56:58