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

识别DataFrame datetime列不规则缺失日期并填充对应值

问题描述

我有一个基于实际数据的样本DataFrame,每行代表一次间隔约20分钟的测量记录,还包含其他列。样例数据如下:

datetime        value
261     2022-10-21 02:00:13     0.164299
262     2022-10-21 02:20:12     0.163009
263     2022-10-21 02:40:14     0.162298
264     2022-10-21 03:00:12     0.162846
265     2022-10-24 08:46:38     1.788360
266     2022-10-24 09:06:47     1.442915
267     2022-10-24 09:27:28     1.246774
268     2022-10-24 09:46:58     0.194352

可以看到,2022-10-21 03:00:12和2022-10-24 08:46:38之间存在时间间隙。需要识别所有此类间隙(可能有多个),然后在这些位置填充对应的日期,并将value列设为NaN。

我目前尝试通过以下代码生成缺失日期:

# 计算两个日期之间的20分钟间隔数
periods = (df.iloc[265,0] - df.iloc[264,0]).total_seconds() / 60.0 / 20

# 生成填充间隙的日期
pd.date_range(df.iloc[264,0], df.iloc[265,0], periods=periods)

求完整的解决方案,预期输出如下(新行的具体分钟数仅作参考,无需完全一致):

datetime        value
261     2022-10-21 02:00:13     0.164299
262     2022-10-21 02:20:12     0.163009
263     2022-10-21 02:40:14     0.162298
264     2022-10-21 03:00:12     0.162846
265     2022-10-21 03:20:00     NaN
266     2022-10-21 03:40:00     NaN
            ...
n-4     2022-10-24 08:26:00     NaN
n-3     2022-10-24 08:46:38     1.788360
n-2     2022-10-24 09:06:47     1.442915
n-1     2022-10-24 09:27:28     1.246774
n       2022-10-24 09:46:58     0.194352
完整解决方案

步骤1:标准化时间列并设置索引

先确保datetime列是正确的时间格式,再将其设为DataFrame的索引,这是后续批量处理时间间隙的基础:

import pandas as pd

# 转换datetime列为datetime类型
df['datetime'] = pd.to_datetime(df['datetime'])
# 设置为索引
df = df.set_index('datetime')

步骤2:按20分钟间隔重采样填充缺失值

使用resample方法按20分钟频率重采样,原有数据会被保留,缺失的时间点会自动生成,value列默认填充为NaN:

# 按20分钟间隔重采样,保留原始数据,缺失位置填充NaN
df_resampled = df.resample('20T').asfreq()

这里的'20T'代表20分钟的时间频率,asfreq()方法会保留原有行的value值,所有间隙处的value自动设为NaN,同时自动识别并处理所有时间间隙,无需手动定位单个间隙。

步骤3:(可选)恢复原数据结构

如果需要将datetime从索引转回普通列,执行以下代码:

df_resampled = df_resampled.reset_index()

结果说明

  • 重采样后的DataFrame会包含所有20分钟间隔的时间点,完全匹配预期输出的格式。
  • 如果原数据包含其他列,resample('20T').asfreq()会对这些列同步填充NaN,满足多列数据的处理需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:01:08