В DataFrame панд я пытаюсь присвоить новые автоинкрементные значения, основанные на некоторой предварительно отсортированной логике из предыдущего шага. Как мне настроить код?

df_group = df_group.sort_values(by=['time'], ascending=True)

mask_4 = ((df_group['line'] == "OR913") & (df_group['time'].str.split(":").str[0].astype(int) < 6))\
         | ((df_group['line'] == "OR913") & (df_group['time'].str.split(":").str[0].astype(int) > 20))

mask_5 = (df_group['line'] == "OR913")

df_group['line_913'] = np.where(mask_4, "13", np.where(mask_5, range(0,len(df_group)), ""))

Проблема в range(0, len(df_group)). Если я изменю его на какой-то новый желаемый диапазон, например range(0, 100) Я получаю следующую ошибку:

df_group['line_913'] = np.where(mask_4, "13", np.where(mask_5, range(0,100), ""))
ValueError: operands could not be broadcast together with shapes (58,) (100,) () 

Итак, с sort_values() я отсортировал значения по времени, и теперь я пытаюсь дать им числа из 1,...,n, где mask_5 является истинным.

DataFrame (образец) я получаю прямо сейчас

current_state

DataFrame (образец) я хочу достичь

desired_output

Небольшая часть этой статьи была полезна, но не очень:

0
Taras