Tengo un marco de datos de pandas. Quiero "retrasar" una de mis columnas. Es decir, por ejemplo, desplazar toda la columna 'pib' hacia arriba en uno y luego eliminar todos los datos en exceso en la parte inferior de las filas restantes para que todas las columnas vuelvan a tener la misma longitud.
df =
y gdp cap
0 1 2 5
1 2 3 9
2 8 7 2
3 3 4 7
4 6 7 7
df_lag =
y gdp cap
0 1 3 5
1 2 7 9
2 8 4 2
3 3 7 7
¿Alguna forma de hacer esto?
df.dropna()
y eliminará todas las filas de NaN sin tener que especificar el número de filas para eliminar.desplazar columna pib hacia arriba:
df.gdp = df.gdp.shift(-1)
y luego quita la última fila
fuente
Para cambiar fácilmente en 5 valores, por ejemplo, y también deshacerse de las filas de NaN, sin tener que realizar un seguimiento del número de valores que cambió por:
d['gdp'] = df['gdp'].shift(-5) df = df.dropna()
fuente
df.gdp = df.gdp.shift(-1) ## shift up df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
fuente
Primero cambie la columna:
df['gdp'] = df['gdp'].shift(-1)
En segundo lugar, elimine la última fila que contiene una celda NaN:
df = df[:-1]
En tercer lugar, restablezca el índice:
df = df.reset_index(drop=True)
fuente