Отредактировано сейчас. Смотрите оригинал.

я из 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()

Ответы на вопрос(1)

Ваш ответ на вопрос