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