J'ai un pandas dataframe. Je veux "retarder" l'une de mes colonnes. Par exemple, déplacer la colonne entière "pgd" vers le haut de un, puis supprimer tout l'excédent données au bas des lignes restantes afin que toutes les colonnes soient à nouveau de longueur égale.
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
Quoi qu'il en soit, faire ça?
In [44]: df['gdp'] = df['gdp'].shift(-1)
In [45]: df
Out[45]:
y gdp cap
0 1 3 5
1 2 7 9
2 8 4 2
3 3 7 7
4 6 NaN 7
In [46]: df[:-1]
Out[46]:
y gdp cap
0 1 3 5
1 2 7 9
2 8 4 2
3 3 7 7
déplacer la colonne pib vers le haut:
df.gdp = df.gdp.shift(-1)
puis retirez la dernière ligne
Pour déplacer facilement de 5 valeurs par exemple et également supprimer les lignes de NaN, sans avoir à suivre le nombre de valeurs que vous avez décalées:
d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()
df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row