Cambio cíclico de una serie de pandas.

Estoy utilizando el método de cambio para una serie de datos en pandas (documentación) .

¿Es posible hacer un cambio cíclico, es decir, el primer valor se convierte en el último valor, en un paso?

>>> 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 

salida deseada:

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

Puede usar np.roll para ciclar los valores de índice y pasar esto como valores para 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 

Si desea conservar su índice, puede volver a sobrescribir los valores nuevamente utilizando 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 

Para hacer esto sin usar un solo paso:

 >>> 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