Adding a column thats result of difference in consecutive rows in pandas

AMM picture AMM · Apr 17, 2014 · Viewed 63.9k times · Source

Lets say I have a dataframe like this

    A   B
0   a   b
1   c   d
2   e   f 
3   g   h

0,1,2,3 are times, a, c, e, g is one time series and b, d, f, h is another time series. I need to be able to add two columns to the orignal dataframe which is got by computing the differences of consecutive rows for certain columns.

So i need something like this

    A   B   dA
0   a   b  (a-c)
1   c   d  (c-e)
2   e   f  (e-g)
3   g   h   Nan

I saw something called diff on the dataframe/series but that does it slightly differently as in first element will become Nan.

Answer

exp1orer picture exp1orer · Apr 17, 2014

Use shift.

df['dA'] = df['A'] - df['A'].shift(-1)