【问题标题】:How can I do an interpolating reindex in pandas using datetime indices?如何使用日期时间索引在 pandas 中进行插值重新索引?
【发布时间】:2014-07-09 11:10:09
【问题描述】:

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

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))

reindex 没有做我想要的,因为它不能插值,而且我的系列可能没有相同的索引。 resample 不是我想要的,因为我想使用一个任意的、已经定义的索引,它不一定是周期性的。我也尝试过使用Index.join 组合索引,希望我可以使用reindex 然后interpolate,但这并没有像我预期的那样工作。有什么指点吗?

【问题讨论】:

    标签: python datetime pandas reindex


    【解决方案1】:

    试试这个:

    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()
    

    基于 cmets,内插到目标索引的结果将是:

    goal_series  = s3.interpolate().reindex(datetime_index)
    
    assert((goal_series == Series([5, 10], datetime_index)).all())
    

    【讨论】:

    • 谢谢你,这让我很顺利。在interpolate 之后,我可以使用reindex 回到所需的索引。
    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多