¿Cómo hacer una resta rodante repetidamente con un marco de datos de Pandas?
Tengo un marco de datos que se ve así:
value 100 1 4 10 5 3Quiero restar repetidamente el valor anterior con el valor actual. Quiero el siguiente resultado:
100 99 95 85 80 77¿Cómo puedo hacer esto? Si tengo varias columnas en el marco de datos, ¿cómo puedo aplicar la misma operación a todas las columnas?
Una solución vectorizada:
-(df['value']).cumsum() + df['value'].iat[0]*2Producción:
0 100 1 99 2 95 3 85 4 80 5 77 Name: value, dtype: int64Combine la expanding con np.subtract.reduce :
df.value.expanding(1).agg(np.subtract.reduce) 0 100.0 1 99.0 2 95.0 3 85.0 4 80.0 5 77.0 Name: value, dtype: float64