Incremento cumsum do Python toda vez que um novo valor é encontrado

Vindo de R, o código seria

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

Que marca sempre que a diferença entre linhas é diferente de zero, para que eu possa usá-lo para detectar transições nos dados, da seguinte forma:

   vals state
1   100     1
...
7   200     2
...
14  300     3

O que seria um equivalente limpo em Python?

Pergunta adicional

A resposta para a pergunta original está publicada abaixo, mas não funcionará corretamente para um quadro de dados agrupado com pandas.

Dados aqui:https://pastebin.com/gEmPHAb7. Observe que existem 2 nomes de arquivos diferentes.

Quando importado comodf_all Agrupo-o com o seguinte e aplico a solução publicada abaixo.

df_grouped = df_all.groupby("filename")
df_all["state"] = (df_grouped['Fit'].diff() != 0).cumsum()

questionAnswers(1)

yourAnswerToTheQuestion