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)