2014-06-06 20 views
6

Powiedz, że mam DataFrame df z datą jako indeks i niektórymi wartościami. Jak mogę wybrać wiersze, w których data jest większa niż pewna wartość x?Pandon Pandas Wybierz indeks, w którym indeks jest większy niż x

Wiem, że mogę przekonwertować indeks na kolumnę, a następnie wybrać opcję df [df ['date']> x], ale czy jest ona wolniejsza niż wykonywanie operacji na indeksie?

+1

Najbardziej idiomatycznym prawdopodobnie [częściowy indeksowania łańcuch] (http://pandas.pydata.org/pandas-docs/stable/timeseries .html # datetimeindex-partial-string-indexing). Ale możesz zrobić coś w stylu 'df [df.index> x]'. –

+0

możesz po prostu zrobić to samo z indeksem, więc jeśli twój indeks jest już datą, to możesz po prostu zrobić 'df [df> x]' po prostu zadziała – EdChum

Odpowiedz

7

Przykład wybierając z DataFrame z wykorzystaniem wskaźnika:

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 
+1

Powyższa odpowiedź jest bardziej niezawodna, ale jeśli chcesz uzyskać szybkie zapytanie (na przykład przy korzystaniu z notatnika jupytera) również obowiązuje: df [de.index> "2014-01-04"] – idichekop