我有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
答案 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)中的文档。