Вы можете попробовать eq
, а затем cumcun
:
df["group"] = df.distance_along_path.eq(0).cumsum()
Пояснение :
Используйте eq
, чтобы найти значения, равные 0
Используйте cumcun
для применения кумулятивного рассчитывать на True
значений
Код + Иллюстрация
# Step 1
print(df.distance_along_path.eq(0))
# 0 True
# 1 False
# 2 False
# 3 False
# 4 True
# 5 False
# 6 False
# 7 True
# 8 False
# 9 False
# 10 False
# Name: distance_along_path, dtype: bool
# Step 2
print(df.assign(group=df.distance_along_path.eq(0).cumsum()))
# distance_along_path group
# 0 0.0 1
# 1 2.2 1
# 2 4.5 1
# 3 7.0 1
# 4 0.0 2
# 5 3.0 2
# 6 5.0 2
# 7 0.0 3
# 8 2.0 3
# 9 5.0 3
# 10 7.0 3
Примечание: как вы можете видеть, столбец группы является числом, а не буква, но это не имеет значения, если она используется в groupby
.