2014-06-06 13 views
6

Dire che ho un dataframe df con data come indice e alcuni valori. Come posso selezionare le righe in cui la data è maggiore di qualche valore x?Panda Python Selezionare Indice in cui l'indice è maggiore di x

So che posso convertire l'indice in una colonna e quindi fare la selezione df [df ['data']> x], ma è più lento di fare operazione sull'indice?

+1

Il più idiomatica è probabilmente [indicizzazione stringa parziale] (http://pandas.pydata.org/pandas-docs/stable/timeseries html # datetimeindex-parziale-stringa-indicizzazione). Ma potresti fare qualcosa come 'df [df.index> x]'. –

+0

puoi fare lo stesso con l'indice, quindi se il tuo indice è già una data allora puoi semplicemente fare 'df [df> x]' funzionerebbe solo – EdChum

risposta

7

Esempio di selezione da un dataframe con l'uso dell'indice:

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

La risposta sopra è più robusta, ma se vuoi ottenere un query veloce (ad esempio, quando si utilizza jupyter notebook) vale anche quanto segue: df [de.index> "2014-01-04"] – idichekop

Problemi correlati