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

如何在Pandas中用前后天同时段均值插值缺失的小时级时间序列数据

实现方案

首先保证你的DataFrame满足两个前置条件:

  • datetime列已转换为pandas时间格式,且按时间升序排列
  • 时间序列是连续的小时粒度(如果存在整行数据缺失的情况,先调用asfreq('H')补全时间行,保证每小时都有对应记录)

核心代码

import pandas as pd

# 1. 处理时间索引(如果已经完成可以跳过)
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime').sort_index()
# 可选:补全缺失的时间行,保证小时粒度连续
df = df.asfreq('H')

# 2. 整列直接填充缺失值,无需切分数据
df['value'] = df['value'].fillna((df['value'].shift(24) + df['value'].shift(-24)) / 2)

逻辑说明

  • shift(24):将value列整体后移24行,每个时间点对应的值为前一天同时段的数值
  • shift(-24):将value列整体前移24行,每个时间点对应的值为后一天同时段的数值
  • 二者取均值后直接通过fillna填充到原列的NaN位置,完全在原DataFrame上操作,无需拆分替换,和你示例的计算逻辑完全匹配。

可选边界处理

如果你的数据首尾时段存在缺失,没有对应的前一天/后一天数据,上述计算后仍会保留NaN,可以额外加一步填充逻辑:

# 用线性插值补全首尾剩余缺失值,可根据需求替换为其他填充策略
df['value'] = df['value'].fillna(df['value'].interpolate())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:45:06