2014-09-11 14 views
14

Mam normalny df.index, do którego chciałbym dodać kilka godzin.Jak prawidłowo dodawać godziny do pliku pandas.tseries.index.DatetimeIndex?

In [1]: test[1].index 
Out[2]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2010-03-11, ..., 2014-08-14] 
Length: 52, Freq: None, Timezone: None 

ten sposób pierwszy element wygląda następująco:

In [1]: test[1].index[0] 
Out[2]: Timestamp('2010-03-11 00:00:00') 

Więc spróbuj tego dodać godzinach:

In [1]: test[1].index[0] + pd.tseries.timedeltas.to_timedelta(16, unit='h') 

jednak uzyskać to:

Out[2]: Timestamp('2010-03-11 00:00:00.000000016') 

Ale chciałbym uzyskać to:

Out[2]: Timestamp('2010-03-11 16:00:00') 

Czego mi brakuje? Rodowiska jest Anaconda (najnowsza) Python 2.7.7, ipython 2,2

Thanks a lot

Odpowiedz

19

Można użyć pd.DateOffset:

test[1].index + pd.DateOffset(hours=16) 

pd.DateOffset akceptuje te same argumenty jak dateutil.relativedelta słów kluczowych.


występujący problem był z powodu tego błędu, który został fixed in Pandas version 0.14.1:

In [242]: pd.to_timedelta(16, unit='h') 
Out[242]: numpy.timedelta64(16,'ns') 

przypadku uaktualnienia, oryginalny kod powinien działać.

+0

Czy możesz krótko wyjaśnić, co było nie tak z tym, co zrobiłem? – hernanavella

+0

Nic. Po prostu próbowałem na przykład w Pandach 0.14.1 i działa to tak, jak sobie wyobrażałeś. unutbu zapewnił ci obejście, które powinno działać ze starszymi wersjami pand (rozsądnie starszymi, a nie epoką kamienia);) –