Diciamo Ho il seguente:il numero di righe prima e dopo un certo valore di indice in pandi
In [1]: import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.rand(11),index=pd.date_range('2015-04-20','2015-04-30'),columns=['A'])
Out[1]:
A
2015-04-20 0.694983
2015-04-21 0.393851
2015-04-22 0.690138
2015-04-23 0.674222
2015-04-24 0.763175
2015-04-25 0.761917
2015-04-26 0.999274
2015-04-27 0.907871
2015-04-28 0.464818
2015-04-29 0.005733
2015-04-30 0.806351
ho qualche metodo complicato che identifica un singolo indice come interessante, per esempio '2015-04 -25' . Posso recuperare la riga con quella indice utilizzando:
In [2]: df.loc['2015-04-25']
Out[2]:
A 0.761917
Name: 2015-04-25 00:00:00, dtype: float64
quale sarebbe il modo più bello per ottenere un numero di n righe prima e/o dopo tale valore dell'indice?
Quello che vorrei fare è qualcosa di simile:
In[3]: df.getRowsBeforeLoc('2015-04-25',3)
Out[3]:
2015-04-22 0.690138
2015-04-23 0.674222
2015-04-24 0.763175
2015-04-25 0.761917
o equivalentemente:
In[3]: df.getRowsAfterLoc('2015-04-25',3)
Out[3]:
2015-04-25 0.761917
2015-04-26 0.999274
2015-04-27 0.907871
2015-04-28 0.464818
(non ho una forte opinione sulla necessità o meno la riga che corrisponde al valore di indice di destinazione in sé è incluso)
Bello e semplice! Per ottenere solo un numero limitato di valori, farei quindi: df.loc [: '2015-04-25']. Tail (3) – jkokorian
Sì, è corretto, vedere la risposta aggiornata – EdChum
E una domanda correlata potrebbe anche essere in grado di rispondere: come otterresti una singola riga (o indice) prima o dopo l'indice di destinazione? Quindi escludendo l'obiettivo stesso? – jkokorian