#python-3.x #pandas
#python-3.x #pandas
Вопрос:
Я хотел бы создать столбец, который генерирует уникальный идентификатор, соответствующий двум моим столбцам в моем фрейме данных.
Вот ниже приведен пример фрейма данных:
df = pd.DataFrame({'month': [1, 2, 1, 3,4,5], 'brand': [76, 76, Arco, Shell, Arco, Cheveron],'address': [aa, aa, ab, bc, cd,de]})
Я хочу индекс, который соответствует как марке, так и адресу, но не месяцу
df = pd.DataFrame({ 'id':[1,1,2,3,4,5] 'month': [1, 2, 1, 3,4,5], 'brand': [76, 76, Arco, Shell, Arco, Cheveron],'address': [aa, aa, ab, bc, cd,de]})
Ответ №1:
Используйте DataFrame.insert
с GroupBy.ngroup
:
df.insert(0, 'id', df.groupby(['brand','address'], sort=False)['month'].ngroup() 1)
print (df)
id month brand address
0 1 1 76 aa
1 1 2 76 aa
2 2 1 Arco ab
3 3 3 Shell bc
4 4 4 Arco cd
5 5 5 Cheveron de
Или объедините столбцы вместе и используйте factorize
:
s = df['brand'].astype(str) '-' df['address'].astype(str)
df.insert(0, 'id', pd.factorize(s)[0] 1)