web-dev-qa-db-fra.com

Colonne Shift dans pandas dataframe up by one?

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?

65
natsuki_2002
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
114
Wouter Overmeire

déplacer la colonne pib vers le haut:

df.gdp = df.gdp.shift(-1)

puis retirez la dernière ligne

7
PeacefulBY

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()
2
ArmandduPlessis
df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
2
Bilal Mahmood