Cyclic shift of a pandas series

You can use np.roll to cycle the index values and pass this as the values to reindex:

In [23]:
df.reindex(index=np.roll(df.index,1))

Out[23]:
         vRatio
index          
45     0.981553
5      0.995232
15     0.999794
25     1.006853
35     0.997781

If you want to preserve your index then you can just overwrite the values again using np.roll:

In [25]:
df['vRatio'] = np.roll(df['vRatio'],1)
df

Out[25]:
         vRatio
index          
5      0.981553
15     0.995232
25     0.999794
35     1.006853
45     0.997781

Here's a slight modification of @EdChum 's great answer, which I find more useful in situations where I want to avoid an assignment:

pandas.DataFrame(np.roll(df.values, 1), index=df.index)

or for Series:

pandas.Series(np.roll(ser.values, 1), index=ser.index)

Tags:

Python

Pandas