Из этого DataFrame:инкрементный идентификатор на основе значения другого столбца
car_id month
93829 September
27483 April
48372 October
93829 December
93829 March
48372 February
27483 March
Как добавить третий столбец, который является в основном новый id
для car
, но инкрементный, как это:
car_id month new_incremental_car_id
93829 September 0
27483 April 1
48372 October 2
93829 December 0
93829 March 0
48372 February 2
27483 March 1
В настоящее время я делаю это, используя groupby('car_id')
, чтобы создать новый DataFrame, к которому я добавляю инкрементный столбец, который затем присоединяюсь к исходному DataFrame, используя ключ соединения car_id
.
Есть ли менее громоздкий, более прямой метод для достижения этой цели?
EDIT
Код настоящее время я использую:
cars_id = pd.DataFrame(list(car_sales.groupby('car_id')['car_id'].groups))
cars_id['car_short_id'] = cars_id.index
cars_id.set_index(0, inplace=True)
car_sales.join(cars_id, on='car_id', how='left')
При условии, что 'car_id' столбец уже типа' category', а затем с помощью 'car_id.cat.codes' может быть от 20 до 200 раз быстрее, чем используя 'pd.factorize' (чем больше DataFrame, тем выше скорость) – Jivan