2013-11-06 2 views
5

Пусть даны Панды dataframe создается следующим образом:Смещение даты для индекса даты Панды DataFrame

dates = pd.date_range('20130101',periods=6) 
df = pd.DataFrame(np.random.randn(6),index=dates,columns=list('A')) 

        A 
2013-01-01 0.847528 
2013-01-02 0.204139 
2013-01-03 0.888526 
2013-01-04 0.769775 
2013-01-05 0.175165 
2013-01-06 -1.564826 

Я хочу добавить 15 дней к индексу. Это не работает>

#from pandas.tseries.offsets import * 
df.index+relativedelta(days=15) 
#df.index + DateOffset(days=5) 

TypeError: relativedelta(days=+15) 

Я, кажется, не в состоянии сделать что-то правильно с индексами ....

ответ

14

вы можете использовать DateOffset:

>>> df = pd.DataFrame(np.random.randn(6),index=dates,columns=list('A')) 
>>> df.index = df.index + pd.DateOffset(days=15) 
>>> df 
        A 
2013-01-16 0.015282 
2013-01-17 1.214255 
2013-01-18 1.023534 
2013-01-19 1.355001 
2013-01-20 1.289749 
2013-01-21 1.484291 
+0

Большое спасибо! Кажется, я не осознавал необходимость предшествовать DateOffset с помощью pd. – dartdog

8

Незначительно короче/более прямой является tshift:

df = df.tshift(15, freq='D') 

Список fr eq aliases находится здесь: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases

+0

Вышеупомянутая ссылка, кажется, сломана, возможно, ссылка на это? http://pandas.pydata.org/pandas-docs/stable/timeseries.html#shifting-lagging – fixxxer

+1

Спасибо @fixxxer, это немного другая ссылка, но я обновил ссылку. – fantabolous

Смежные вопросы