В 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 (образец) я получаю прямо сейчас
DataFrame (образец) я хочу достичь
Небольшая часть этой статьи была полезна, но не очень:
Новые вопросы
python-3.x
По вопросам программирования Python, относящегося к версии языка 3+. Используйте более общий тег [python] для всех вопросов Python и добавляйте его только в том случае, если ваш вопрос зависит от версии. Используйте теги [python-2.x] для вопросов Python 2.