pandas替换tseries datetimeindex

时间:2017-04-04 19:37:12

标签: python pandas

我有pandas对象:

df_days
DatetimeIndex(['2015-05-24', '2015-05-24', '2015-05-24',..., '2016-03-19',
               '2016-03-19', '2016-03-20'],
              dtype='datetime64[ns]', length=7224, freq=None)

type(df_days)
<class 'pandas.tseries.index.DatetimeIndex'>

我有一系列索引:

hrIdx
(array([  23,   47,   71,   95,  119,  143,  167,  191,  215,  239,  263,
        287,  311,  335,  359,  383,  407,  431,  455,  479,  503,  527,
        551,  575,  599, ...,1592], dtype=int64),)

我正在尝试以下方法:

df_days[hrIdx] = df_days[hrIdx] + td(days=-1)

但是赋值操作失败了。减去一天的右侧操作工作正常。

错误是:

    raise TypeError("Index does not support mutable operations")
TypeError: Index does not support mutable operations

只更改df_days的特定元素的正确方法是什么,就像我上面尝试过的那样?

编辑:

from datetime import timedelta as td

1 个答案:

答案 0 :(得分:2)

引用pandas文档,我发现了这个:http://pandas.pydata.org/pandas-docs/stable/timedeltas.html#id1

您可以将此技巧与该代码一起使用:

tdeltas = pd.TimedeltaIndex([str((0-int(i in hrIdx)))+' days' for i in xrange(len(df_days))])

然后:

df_days = df_days + tdeltas

注意:我正在查看最新版本的pandas(0.19)中的文档。