Панды создают новый столбец, содержащий индекс, на основе значения другого

У меня есть такой фрейм данных:

a


4.0
5.5
5.5
6.7
7.9
7.9
9.4

Я хочу добавить новый столбец с именем b, «индексирующий» значения в первом. Новый фрейм данных будет выглядеть так:

a   b

4.0 1
5.5 2
5.5 2
6.7 3
7.9 4
7.9 4
9.4 5

Спасибо.

0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать pd.factorize:

codes, uniques = pd.factorize(df['a'])

df['b'] = codes

(или df['b'] = codes + 1, если вы хотите, чтобы эти индексы начинались с 1 вместо 0)

Другие вопросы по теме