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

如何在Python的Pandas DataFrame中补全缺失的小时级Datetime

补全时间序列缺失记录的解决方案

嘿,这个需求用pandas的时间序列工具就能完美解决,咱们一步步来实现:

步骤说明

我们需要生成从第一天的00:00:00 AM到最后一天的11:00:00 PM的完整小时序列,然后把原数据和这个序列合并,缺失的Value自动填充为NA,同时保留原数据的Date和Time格式。

完整代码实现

import pandas as pd

# 原数据(你提供的示例)
date = ['23/8/2019'] * 3 + ['24/8/2019'] * 3
time = ['9:00:00 PM', '10:00:00 PM', '11:00:00 PM', '12:00:00 AM', '1:00:00 AM', '2:00:00 AM']
datetime = pd.to_datetime(pd.Series(date) + ' ' + pd.Series(time))
value = [10,20,40,20,30,5]
df = pd.DataFrame(list(zip(date,time,datetime,value)), columns=['Date','Time','Datetime','Value'])

# 1. 确定完整时间范围的起止点
start_dt = pd.to_datetime(df['Date'].min()).floor('D')  # 取最早日期的00:00:00
end_dt = pd.to_datetime(df['Date'].max()).floor('D') + pd.Timedelta(hours=23)  # 取最晚日期的23:00:00

# 2. 生成每小时的完整时间序列
full_time_index = pd.date_range(start=start_dt, end=end_dt, freq='H')

# 3. 合并原数据与完整序列,缺失值自动填充为NA
df_full = df.set_index('Datetime').reindex(full_time_index)

# 4. 重新生成和原格式一致的Date、Time列
df_full['Date'] = df_full.index.strftime('%d/%m/%Y')  # 格式:日/月/年
df_full['Time'] = df_full.index.strftime('%I:%M:%S %p')  # 12小时制带AM/PM

# 5. 恢复原数据的列结构
df_full = df_full.reset_index().rename(columns={'index': 'Datetime'})
df_full = df_full[['Date', 'Time', 'Datetime', 'Value']]

结果展示

生成的df_full会包含从2019-08-23 00:00:00到2019-08-24 23:00:00的所有小时记录,示例部分行如下:

DateTimeDatetimeValue
23/08/201912:00:00 AM2019-08-23 00:00:00NA
23/08/201901:00:00 AM2019-08-23 01:00:00NA
............
23/08/201909:00:00 PM2019-08-23 21:00:0010
23/08/201910:00:00 PM2019-08-23 22:00:0020
............
24/08/201902:00:00 AM2019-08-24 02:00:005
............
24/08/201911:00:00 PM2019-08-24 23:00:00NA

关键步骤解释

  • floor('D'):将日期向下取整到当天的0点,确保起始时间是第一天的凌晨。
  • pd.date_range(freq='H'):生成按小时间隔的完整时间序列,覆盖需求的整个时间范围。
  • reindex():将原数据对齐到完整时间序列,缺失的时间点对应的Value会自动填充为NA。
  • strftime():按照原数据的格式生成Date和Time字符串,保证输出格式和输入一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:37:54