将pandas datetime index设置为前一天

时间:2014-12-17 11:05:47

标签: python datetime pandas

是否可以在pandas中将日期时间索引设置为前一天?

我有这个索引

mydata.data.index
Out[7]: <class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-27 22:00:00, ..., 2014-12-16 22:00:00]
Length: 500, Freq: None, Timezone: None

并且错了。数据开始的正确日期是第二天。那是2014-12-17,他们在2013-01-28结束

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:5)

一些不同的选择:

使用shift方法:

In [10]: dti = pd.date_range('2012-01-01', periods=2)

In [11]: dti
Out[11]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01, 2012-01-02]
Length: 2, Freq: D, Timezone: None

In [13]: dti.shift(1, freq='D')
Out[13]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-02, 2012-01-03]
Length: 2, Freq: D, Timezone: None

但也许更容易(如@Evert通知),你可以简单地添加一天的timedelta:

In [14]: dti + pd.Timedelta('1 day')
Out[14]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-02, 2012-01-03]
Length: 2, Freq: None, Timezone: None

对于较旧的pandas版本,您也可以使用datetime.timedelta(days=1)pd.Timedelta只能从0.15开始使用。)