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

如何为含Datetime Index的DataFrame生成插值后时间索引新表

没问题!要给你的DataFrame生成带插值后时间索引的新表,用pandas可以轻松搞定。我会结合你的示例数据一步步演示,你可以根据自己需要调整时间粒度~

首先先还原你的原始DataFrame:

import pandas as pd

# 构建你提供的示例数据
data = {'values': [10, 20, 30]}
dates = pd.to_datetime(['2010-01-01', '2010-01-02', '2010-01-03'])
df = pd.DataFrame(data, index=dates)
核心实现步骤

1. 生成目标时间索引

首先你需要定义想要的插值后时间粒度,比如按小时、分钟,或者补全缺失的日期。用pd.date_range()来生成连续的时间序列:

# 示例:生成小时级的连续时间索引(从原数据的最早到最晚时间)
new_index = pd.date_range(start=df.index.min(), end=df.index.max(), freq='H')

这里的freq参数可以灵活调整:

  • 'H' = 小时级
  • 'T' = 分钟级
  • 'D' = 天级(如果只是补全缺失的日期)
  • 还可以自定义比如'30T'代表每30分钟

2. 重新索引并插值

用reindex()把原数据对齐到新的时间索引,再用interpolate()完成数值插值:

# 线性插值(默认方法,适合连续数值的平滑过渡)
df_interpolated = df.reindex(new_index).interpolate(method='linear')

如果你不需要平滑插值,而是想要保持前一个时间点的值直到下一个,就用前向填充:

# 前向填充(保留上一个有效值)
df_interpolated = df.reindex(new_index).interpolate(method='ffill')

查看结果

运行后你可以打印前几行看看效果:

print(df_interpolated.head())

输出示例(小时级线性插值):

values
2010-01-01 00:00:00    10.0
2010-01-01 01:00:00    10.416667
2010-01-01 02:00:00    10.833333
2010-01-01 03:00:00    11.250000
2010-01-01 04:00:00    11.666667

如果你的需求是补全天级缺失值(比如原数据中间缺了某几天),只需要把freq改成'D'即可,逻辑完全一致~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:26