Spostare la colonna nel dataframe dei panda di uno?


90

Ho un dataframe dei panda. Voglio "ritardare" una delle mie colonne. Significa, ad esempio, spostare l'intera colonna "gdp" verso l'alto di uno e quindi rimuovere tutti i dati in eccesso nella parte inferiore delle righe rimanenti in modo che tutte le colonne abbiano di nuovo la stessa lunghezza.

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

Comunque per farlo?

Risposte:


159
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

1
Basta usare df.dropna()e lascerĂ  cadere tutte le righe NaN senza che tu debba specificare il numero di righe da eliminare.
ArmandduPlessis

8

sposta colonna gdp su:

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

e quindi rimuovere l'ultima riga


4

Ad esempio, per spostarsi facilmente di 5 valori e anche eliminare le righe NaN, senza dover tenere traccia del numero di valori spostati di:

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()

3
df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row

0

Per prima cosa sposta la colonna:

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

In secondo luogo rimuovi l'ultima riga che contiene una cella NaN:

df = df[:-1]

Terzo reimpostare l'indice:

df = df.reset_index(drop=True)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.