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

如何为Pandas数据框计算相邻时间间隔并排查超时记录?

计算Pandas DataFrame时间间隔并识别超阈值记录

最简解决方案

直接用Pandas内置的diff()方法就能快速实现需求,代码如下:

import pandas as pd

# 读取数据
df = pd.read_csv("temps.csv")
# 转换time列为datetime类型
df['time'] = pd.to_datetime(df['time'], format="%Y-%m-%d %H:%M:%S")
# 计算每行与上一行的时间间隔
df['elapsed'] = df['time'].diff()
# 第一行无前置数据,将间隔设为0(也可以保留默认的NaT)
df['elapsed'] = df['elapsed'].fillna(pd.Timedelta(0))

# 筛选出与上一条记录间隔超过15分钟的行
threshold = pd.Timedelta(minutes=15)
over_threshold = df[df['elapsed'] > threshold]
print(over_threshold)

你原有代码的问题

你用while循环时,每次执行df['elapsed'] = next_dt - start_dt都会把整个列的所有值覆盖成当前循环计算的单个差值,而非给对应行赋值。循环结束后,所有行的elapsed自然都是最后一次循环的结果,导致所有间隔值相同。

补充说明

  • diff()是Pandas专为相邻元素差值计算设计的方法,针对datetime类型会自动返回Timedelta对象,无需手动遍历索引;
  • 用pd.Timedelta(minutes=15)可以直观定义15分钟的阈值,直接和elapsed列做比较即可筛选目标行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:25:12