Shift column in pandas dataframe up by one?

I've got a pandas dataframe. I want to 'lag' one of my columns. Meaning, for example, shifting the entire column 'gdp' up by one, and then removing all the excess data at the bottom of the remaining rows so that all columns are of equal length again.

    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

Anyway to do this?

    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

From: stackoverflow.com/q/20095673

Back to homepage or read more recommendations: