编辑:您更新了问题,根据索引中的时间戳差异进行插值,将这些比例应用于数据帧值。
这里有一个粗略的方法,实际上应该相当快:
ts = pd.to_datetime(['2014-01-08 08:00:42',
'2014-01-08 08:01:00',
'2014-01-08 08:01:12',
'2014-01-08 08:01:52',
'2014-01-08 08:02:02'])
df = pd.DataFrame([1, np.nan, 3, 7, 9], index=ts, columns=['value'])
td = df.index.to_series().diff().dt.total_seconds()
interp = df.value.shift(1) + (df.value.shift(-1) - df.value.shift(1)) \
* td / (td.shift(-1) + td)
df['value'] = df['value'].fillna(interp)
print(df)
value
2014-01-08 08:00:42 1.0
2014-01-08 08:01:00 2.2
2014-01-08 08:01:12 3.0
2014-01-08 08:01:52 7.0
2014-01-08 08:02:02 9.0
在本例中,第二位置的NaN具有分别低于18个单位和高于12个单位的时间增量差。因此,它应该用值1+(3-1)*(18/(18+12))填充。
你也可以简化数学。
还有一件事:在研究这个答案时,我问了自己一个关于计算时间增量的问题@piRSquared有一个更快的解决方案
here
如果速度对你来说很重要。