web-dev-qa-db-de.com

Python Pandas Wählen Sie einen Index aus, bei dem der Index größer als x ist

Angenommen, ich habe einen DataFrame df mit Datum als Index und einigen Werten. Wie kann ich die Zeilen auswählen, in denen das Datum größer als ein Wert x ist? 

Ich weiß, dass ich den Index in eine Spalte konvertieren kann und dann df[df['date']>x] auswählen kann, aber ist das langsamer als die Operation für den Index?

13
user3092887

Beispiel für die Auswahl aus einem DataFrame mithilfe von 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
18
Datageek

Die vorhandene Antwort ist richtig, wenn wir jedoch anhand des Index auswählen, die zweite Methode von hier aus wäre fraster:

# 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')]
0
ntg