5 votes

Erreur de troncature de DatetimeIndex de Pandas

J'ai un dataframe pandas df :

Out[16]:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 269850 entries, 2012-12-19 16:15:36 to 2012-12-20 14:36:55
Data columns:
X1    269850  non-null values
X2      269848  non-null values
X3      269848  non-null values
dtypes: float64(2), object(1)

Et je voudrais découper la trame de données pour retourner une fenêtre de quatre heures de données de 2012-12-20 05:00:00 a 2012-12-20 09:00:00

Quand j'essaie :

Slicedf = df.truncate(before='12/20/2012 05:00:00',after='12/20/2012 09:00:00')

L'erreur suivante s'est produite :

KeyError: datetime.datetime(2012, 12, 20, 5, 0)

J'ai également essayé (à partir de Découpage de DataFrame de Pandas par jour/heure/minute ) :

from datetime import datetime
x=datetime(2012,12,20,5,0,0)
y=datetime(2012,12,20,9,0,0)
Slicedf = df.ix[x:y]

qui renvoie exactement la même erreur.

5voto

Halee Points 146

Vous devrez peut-être le changer en :

df = df.sort_values() o df = df.sort_index() avant la fonction truncate afin de corriger l'erreur dans les versions ultérieures de Pandas.

Ainsi votre code ressemblerait à : df = df.sort_index().truncate(before='12/20/2012 05:00:00', after='12/20/2012 09:00:00')

sort a été déprécié pour les DataFrames en faveur de l'utilisation de l'un ou l'autre des éléments suivants sort_values o sort_index . Vous pouvez trouver plus de détails sur chacun d'eux dans la documentation. aquí y aquí respectivement.

4voto

cmiller8 Points 284

df a été créé en concaténant plusieurs cadres de données ensemble à l'aide de la fonction concat fonction.

df = df.sort() avant la troncature a corrigé l'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X