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

如何使用Python pandas实现5分钟间隔时序数据逐行按小时差值对比

解决方案

前置预处理

首先需要将时间列转换为pandas可识别的 datetime 格式,保证时间计算逻辑正常:

import pandas as pd
df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.sort_values('timestamp').reset_index(drop=True)

方法1:merge_asof 实现(兼容时间戳有秒级偏差场景)

该方案适配你提到的「相近时间点匹配」需求,哪怕两个匹配时间点存在秒级漂移也能正确匹配,是适用性最广的方案:

# 生成1小时前的匹配基准时间列
df['match_time'] = df['timestamp'] - pd.Timedelta(hours=1)

# 按最近时间匹配1小时前的温度值
merged = pd.merge_asof(
    df,
    df[['timestamp', 'temp']].rename(columns={'timestamp': 'match_time', 'temp': 'temp_1h_ago'}),
    on='match_time',
    direction='nearest', # 匹配最接近的时间点
    tolerance=pd.Timedelta(minutes=1) # 允许的最大时间偏差,避免匹配到间隔过大的异常点
)

# 计算温度差值,可按需删除辅助列
merged['temp_diff'] = merged['temp'] - merged['temp_1h_ago']
merged = merged.drop(columns=['match_time'])

方法2:shift 实现(仅适用于时间严格5分钟间隔无偏差场景)

如果你的数据没有采集漂移,每条数据间隔严格为5分钟,直接移动12行(1小时共12个5分钟间隔)即可实现需求,代码更简洁高效:

df = df.set_index('timestamp')
# shift(12)表示将温度列向下偏移12行,对应1小时前同时间间隔的温度值
df['temp_diff'] = df['temp'] - df['temp'].shift(12)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:18:00