我有一个名为pandas.core.series.TimeSeries
的{{1}},如下所示:
ts
此TimeSerie的索引间隔不定。
我希望在给定日期时间内timestamp
2013-08-11 14:23:50 0.3219
2013-08-11 14:23:49 0.3222
2013-08-11 14:19:14 0.3305
2013-08-11 00:47:15 0.3400
2013-08-11 00:47:15.001 0.3310
2013-08-11 00:47:15.002 0.3310
2013-08-10 22:38:15.003 0.3400
2013-08-10 22:38:14 0.3403
2013-08-10 22:38:13 0.3410
的价值为ts
我只需要插入 ONE 值,而不是整个TimeSerie
我只想使用前一个索引(2013-08-11 14:20:00
)和下一个索引(2013-08-11 14:23:49
)之间的线性函数插入数据
答案 0 :(得分:4)
获取系列的一部分,仅包括目标上方和下方的条目。然后使用interpolate
。
def interpolate(ts, target):
ts1 = ts.sort_index()
b = (ts1.index > target).argmax() # index of first entry after target
s = ts1.iloc[b-1:b+1]
# Insert empty value at target time.
s = s.reindex(pd.to_datetime(list(s.index.values) + [pd.to_datetime(target)]))
return s.interpolate('time').loc[target]
示例:
interpolate(ts, '2013-08-11 14:20:00')
2013-08-11 14:20:00 0.329112