Mam ramkę danych pandy. Chcę „opóźnić” jedną z moich kolumn. Oznacza to, na przykład, przesunięcie całej kolumny „gdp” w górę o jeden, a następnie usunięcie wszystkich nadmiarowych danych na dole pozostałych wierszy, tak aby wszystkie kolumny były znowu równej długości.
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
Zresztą to zrobić?
df.dropna()
a usunie wszystkie wiersze NaN bez konieczności określania liczby wierszy do usunięcia.przesunięcie kolumny gdp w górę:
df.gdp = df.gdp.shift(-1)
a następnie usuń ostatni wiersz
źródło
Aby na przykład łatwo przesunąć o 5 wartości, a także pozbyć się wierszy NaN, bez konieczności śledzenia liczby wartości, które przesunąłeś:
d['gdp'] = df['gdp'].shift(-5) df = df.dropna()
źródło
df.gdp = df.gdp.shift(-1) ## shift up df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
źródło
Najpierw przesuń kolumnę:
df['gdp'] = df['gdp'].shift(-1)
Po drugie usuń ostatni wiersz, który zawiera komórkę NaN:
df = df[:-1]
Po trzecie resetowanie indeksu:
df = df.reset_index(drop=True)
źródło