web-dev-qa-db-fra.com

Comment ajouter correctement des heures à un pandas.tseries.index.DatetimeIndex?

J'ai un df.index normal que j'aimerais lui ajouter quelques heures.

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

Voici à quoi ressemble le premier élément:

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

J'essaie donc d'ajouter les heures:

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

Cependant, je reçois ceci:

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

Mais je voudrais obtenir ceci:

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

Qu'est-ce qui me manque?. L'environnement est Anaconda (dernier) Python 2.7.7, iPython 2.2

Merci beaucoup

22
hernanavella

Vous pouvez utiliser pd.DateOffset :

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

pd.DateOffset accepte les mêmes arguments de mot-clé que dateutil.relativedelta .


Le problème que vous avez rencontré est dû à ce bogue qui a été corrigé dans Pandas version 0.14.1 :

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

Si vous effectuez une mise à niveau, votre code d'origine devrait fonctionner.

33
unutbu