Циклический сдвиг серии панд

Я использую метод сдвига для ряда данных в пандах (документация) .

Возможно ли сделать циклический сдвиг, т. Е. Первое значение станет последним значением за один шаг?

>>> input Out[20]: 5 0.995232 15 0.999794 25 1.006853 35 0.997781 45 0.981553 Name: vRatio, dtype: float64 >>> input.shift() Out[21]: 5 NaN 15 0.995232 25 0.999794 35 1.006853 45 0.997781 Name: vRatio, dtype: float64 

желаемый выход:

 Out[21]: 5 0.981553 15 0.995232 25 0.999794 35 1.006853 45 0.997781 Name: vRatio, dtype: float64 

Вы можете использовать np.roll для циклического изменения значений индекса и передать это как значения для 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 

Если вы хотите сохранить свой индекс, вы можете просто перезаписать значения снова, используя 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 

Для этого без использования одного шага:

 >>> output = input.shift() >>> output.loc[output.index.min()] = input.loc[input.index.max()] >>> output Out[32]: 5 0.981553 15 0.995232 25 0.999794 35 1.006853 45 0.997781 Name: vRatio, dtype: float64