Supposons que j'ai une variable __ DataFrame df
avec la date comme index et certaines valeurs. Comment sélectionner les lignes dont la date est supérieure à une valeur x
?
Je sais que je peux convertir l'index en une colonne, puis sélectionner le df[df['date']>x]
, mais est-ce plus lent que l'opération sur l'index?
Exemple de sélection dans un DataFrame avec l’utilisation d’index:
from numpy.random import randn
from pandas import DataFrame
from datetime import timedelta as td
import dateutil.parser
d = dateutil.parser.parse("2014-01-01")
df = DataFrame(randn(6,2), columns=list('AB'), index=[d + td(days=x) for x in range(1,7)])
In [1]: df
Out[1]:
A B
2014-01-02 -1.172285 1.706200
2014-01-03 0.039511 -0.320798
2014-01-04 -0.192179 -0.539397
2014-01-05 -0.475917 -0.280055
2014-01-06 0.163376 1.124602
2014-01-07 -2.477812 0.656750
In [2]: df[df.index > dateutil.parser.parse("2014-01-04")]
Out[2]:
A B
2014-01-05 -0.475917 -0.280055
2014-01-06 0.163376 1.124602
2014-01-07 -2.477812 0.656750
La réponse existante est correcte, cependant si nous sélectionnons sur la base de l'index, la deuxième méthode à partir d'ici serait plus rapide:
# Set index
df = df.set_index(df['date'])
# Select observations between two datetimes
df.loc[pd.TimeStamp('2002-1-1 01:00:00'):pd.TimeStamp('2002-1-1 04:00:00')]