2013-11-20 15 views
37

Ho un dataframe panda. Voglio "ritardare" una delle mie colonne. Significa, ad esempio, spostare l'intera colonna 'gdp' in su di uno, e quindi rimuovere tutti i dati in eccesso nella parte inferiore delle righe rimanenti in modo che tutte le colonne abbiano nuovamente la stessa lunghezza.python: shift column in pandas dataframe up di uno

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 

In ogni caso, per fare questo?

risposta

70
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 
+0

classico. una risposta che include la rimozione dell'ultima riga. buona risposta! –

6

spostamento di colonna pil up:

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

e quindi rimuovere l'ultima riga

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