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

如何检测DataFrame每行时间与前一行是否相差10分钟并生成结果?

解决方案

假设你使用Python的Pandas库处理数据集,以下是适配10万+行大数据量的高效实现方式:

步骤1:合并日期与时间为完整时间戳

要正确处理跨天场景,必须先将date和time列合并为标准的datetime类型:

import pandas as pd

# 合并date与time列,生成完整时间戳
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])

步骤2:按传感器分组计算时间差

不同传感器的时间序列独立,需按sensor_id分组后,计算当前行与同组前一行的时间差(单位:分钟):

# 分组计算相邻行的时间差,转换为分钟
df['time_diff_min'] = df.groupby('sensor_id')['datetime'].diff().dt.total_seconds() / 60

生成的time_diff_min列中,每组第一行因无前置数据会显示NaN,其余行值为两行的时间差(分钟)。

步骤3:生成10分钟间隔的布尔序列

针对跨天场景(如前一行是2024-05-20 23:50:00,下一行是2024-05-21 00:00:00),直接判断时间差是否等于10分钟即可。若你的业务逻辑支持循环计时(如间隔23小时50分即1430分钟也视为符合),可同时判断两种情况:

# 基础逻辑:仅判断时间差是否为10分钟(适配正常跨天)
df['is_10min_interval'] = df['time_diff_min'] == 10.0

# 若需支持循环计时(如前一天16:58到当天15:08,实际为间隔23小时50分),可修改为:
# df['is_10min_interval'] = df['time_diff_min'].isin([10.0, 1430.0])

注:你提到的16:58到15:08的例子,正常时间差为-110分钟,不符合10分钟间隔逻辑,推测是表述笔误,上述代码可正确处理23:58到00:08这类跨天10分钟间隔的场景。

性能说明

上述方法使用Pandas内置的分组与diff方法,避免了低效的循环遍历,能快速完成10万+行数据的计算。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:40:42