La manera de recorrer las filas seleccionadas en pandas trama de datos con las condiciones que emparejan tres filas?

pkhiev:

si tengo una trama de datos de la muestra así:

>>> import pandas as pd
>>> a = [100,300,200,100,700,600,400,600]
>>> i =  ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007"]
>>> df = pd.DataFrame(a, index = i, columns = {"gdp"})
>>> df
      gdp
2000  100
2001  300
2002  200
2003  100
2004  700
2005  600
2006  400
2007  600

res=[]

Quiero iterar a través de las filas, y las condiciones son: si la fila (x + 1) - fila (x) <0 & Row (x + 2) -row (x + 1) <0 res.append (índice [x ])

Así, en este ejemplo, me gustaría tener una lista de [2001, 2004]

No estoy seguro de cómo escribir el código para esto. ¡Gracias!

Jezreel:

Yo prefiero solución no bucle, debido a un mejor rendimiento - el uso Series.shift, por restar Series.suby comparar con Series.ltmenos último filtro, por boolean indexingcon DataFrame.loc, si es necesario también el filtro por nombre de columna gdp:

s1 = df['gdp'].shift(-1)
s2 = df['gdp'].shift(-2)

m = s1.sub(df['gdp']).lt(0) & s2.sub(s1).lt(0)
out = df.loc[m, 'gdp']
print (out)
2001    300
2004    700
Name: gdp, dtype: int64

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=292426&siteId=1
Recomendado
Clasificación