使用Python / Pandas仅插值TimeSerie的一个值

时间:2013-08-12 07:59:49

标签: python pandas

我有一个名为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)之间的线性函数插入数据

1 个答案:

答案 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