如何使用日期时间索引在pandas中进行插值重建索引?

Kev*_*n S 4 python datetime pandas reindex

我有一个带有日期时间索引的系列,我想要的是使用其他一些任意日期时间索引来插入这些数据.基本上我想要的是如何使以下代码片段或多或少工作:

from pandas import Series
import datetime

datetime_index = [datetime.datetime(2010, 1, 5), datetime.datetime(2010, 1, 10)]
data_series = Series([5, 15], [datetime.datetime(2010, 1, 5), datetime.datetime(2010, 1, 15)])

def interpolating_reindex(data_series, datetime_index):
    """?????"""

goal_series = interpolating_reindex(data_series, datetime_index) 

assert(goal_series == Series([5, 10], datetime_index))
Run Code Online (Sandbox Code Playgroud)

reindex不能做我想要的,因为它不能插值,而且我的系列也可能没有相同的索引. resample不是我想要的,因为我想使用一个任意的,已经定义的索引,它不一定是周期性的.我也试过用结合指数Index.join的希望,我可以再做reindex,然后interpolate,但如我所料,没有工作.有什么指针吗?

HYR*_*YRY 6

试试这个:

from pandas import Series
import datetime

datetime_index = [datetime.datetime(2010, 1, 5), datetime.datetime(2010, 1, 10)]
s1 = Series([5, 15], [datetime.datetime(2010, 1, 5), datetime.datetime(2010, 1, 15)])
s2 = Series(None, datetime_index)
s3 = s1.combine_first(s2)
s3.interpolate()
Run Code Online (Sandbox Code Playgroud)

根据注释,内插到目标索引的结果将是:

goal_series  = s3.interpolate().reindex(datetime_index)

assert((goal_series == Series([5, 10], datetime_index)).all())
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这让我大部分都在那里.在`interpolate`之后,我可以使用`reindex`返回到所需的索引. (2认同)