Python cumsum incrementa cada vez que se encuentra un nuevo valor
Viniendo de R, el código sería
x <- data.frame(vals = c(100,100,100,100,100,100,200,200,200,200,200,200,200,300,300,300,300,300))
x$state <- cumsum(c(1, diff(x$vals) != 0))
Lo que marca cada vez que la diferencia entre filas no es cero, por lo que puedo usarla para detectar transiciones en datos, así:
vals state
1 100 1
...
7 200 2
...
14 300 3
¿Cuál sería un equivalente limpio en Python?
Pregunta adicional
La respuesta a la pregunta original se publica a continuación, pero no funcionará correctamente para un marco de datos agrupado con pandas.
Datos aquí:https://pastebin.com/gEmPHAb7. Tenga en cuenta que hay 2 nombres de archivo diferentes.
Cuando se importa comodf_all
Lo agrupo con lo siguiente y luego aplico la solución publicada a continuación.
df_grouped = df_all.groupby("filename")
df_all["state"] = (df_grouped['Fit'].diff() != 0).cumsum()