Отредактировано сейчас. Смотрите оригинал.
я из R, код будет
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))
Который отмечает каждый раз, когда разница между строками не равна нулю, так что я могу использовать его для определения переходов в данных, например, так:
vals state
1 100 1
...
7 200 2
...
14 300 3
Что будет чистым эквивалентом в Python?
Дополнительный вопрос
Ответ на оригинальный вопрос опубликован ниже, но он не будет работать должным образом для сгруппированного кадра данных с пандами.
Данные здесь:https://pastebin.com/gEmPHAb7, Обратите внимание, что есть 2 разных имени файла.
При импорте какdf_all
Я сгруппировал это со следующим, и затем применяю решение, отправленное ниже.
df_grouped = df_all.groupby("filename")
df_all["state"] = (df_grouped['Fit'].diff() != 0).cumsum()