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

Respuestas a la pregunta(1)

Su respuesta a la pregunta