如何将小时级数据拆分为5分钟间隔并保留每小时原始记录?
如何将小时级时间序列数据填充为5分钟粒度并保留原始值?
问题场景
现有小时级时间序列数据:
Time Humidity Condition 2014-09-01 00:00:00 84 Cloudy 2014-09-01 01:00:00 94 Rainy
需要转换为每5分钟一条记录,且每小时内的所有记录复用对应小时的原始Humidity和Condition值,避免resample+mean()等聚合函数修改原始数据。
解决方案
使用Pandas的**前向填充(ffill)**结合重采样或重新索引即可实现需求,以下是两种可靠方法:
方法1:resample + ffill
直接对原数据按5分钟粒度重采样,再用前向填充补全缺失值,自动复用最近的原始数据:
import pandas as pd # 构造示例数据 data = { 'Time': ['2014-09-01 00:00:00', '2014-09-01 01:00:00'], 'Humidity': [84, 94], 'Condition': ['Cloudy', 'Rainy'] } df = pd.DataFrame(data) # 转换时间列为索引并确保格式为datetime df['Time'] = pd.to_datetime(df['Time']) df = df.set_index('Time') # 按5分钟重采样并前向填充 df_resampled = df.resample('5T').ffill()
方法2:手动生成时间索引 + reindex + ffill
若需更精准控制时间范围,可手动生成完整的5分钟时间序列后重新索引:
# 生成从数据起始到结束的5分钟间隔时间索引 full_time_index = pd.date_range(start=df.index.min(), end=df.index.max(), freq='5T') # 重新索引并前向填充 df_resampled = df.reindex(full_time_index).ffill()
效果验证
执行后df_resampled的输出符合需求:
Humidity Condition 2014-09-01 00:00:00 84 Cloudy 2014-09-01 00:05:00 84 Cloudy 2014-09-01 00:10:00 84 Cloudy ... 2014-09-01 00:55:00 84 Cloudy 2014-09-01 01:00:00 94 Rainy 2014-09-01 01:05:00 94 Rainy ...
内容的提问来源于stack exchange,提问作者KiuSandy
相关产品推荐
相关产品推荐

