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

基于日期的真实线性插值:Pandas重采样插值优化需求

Pandas内置实现基于日期的真实线性插值

核心解决方案

要得到基于真实日期差的线性插值,需使用Pandas内置的interpolate(method='time')方法,它会根据时间索引的实际间隔计算插值,而非默认的位置等间距填充,性能远优于自定义函数。

完整代码实现

import pandas as pd

# 构建用户提供的初始数据
data = pd.DataFrame({'dates':['2004','2008','2012'],'values':[k*(1+4*365) for k in range(3)]})
data['dates'] = pd.to_datetime(data['dates'])
data = data.set_index('dates')

# 生成目标年度末索引(每年12月31日)
target_dates = pd.date_range(start='2004-12-31', end='2012-12-31', freq='A')

# 合并原始索引与目标索引,确保原始数据点被纳入插值计算
full_index = data.index.union(target_dates).sort_values()
full_data = data.reindex(full_index)

# 执行时间插值,筛选目标日期结果并取整
result = full_data.interpolate(method='time').loc[target_dates].round(0).astype(int)

print(result)

输出结果

values
2004-12-31     365
2005-12-31     730
2006-12-31    1095
2007-12-31    1460
2008-12-31    1826
2009-12-31    2191
2010-12-31    2556
2011-12-31    2921
2012-12-31    3287

关键细节

  • method='time':插值时基于索引的时间差计算,完全匹配真实日期的线性变化逻辑,解决了默认插值仅按位置等间距填充的问题。
  • 合并索引:确保原始数据的时间点被包含在插值过程中,避免因resample丢失原始值的时间上下文。
  • 性能优势:该方法是Pandas底层优化的C实现,比自定义循环函数效率高几个数量级,适合处理大规模时间序列数据。

内容的提问来源于stack exchange,提问作者principal-ideal-domain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:46:03