Замените значения в столбце на основе другого фрейма данных

#python-3.x #pandas #dataframe #numpy

Вопрос:

У меня есть столик:

 Name        Profession         Character
Ben         cinematographer    Nan
Scarlett    actress            Black Widow
Robert      actor              Iron Man
Chris       actor              Thor
Kevin       producer           Nan
 

Я создал новый фрейм данных со столбцом уникальных значений, отсортированных в порядке возрастания из приведенной выше таблицы, и добавочным столбцом

 ID    Job
1      actor
2      actress
3      cinematographer
4      producer
 

Теперь мне нужно заменить значения в столбце профессия в исходной таблице соответствующим идентификатором из новой таблицы
Желаемый Результат

 Name        Profession         Character
Ben         3                  Nan
Scarlett    2                  Black Widow
Robert      1                  Iron Man
Chris       1                  Thor
Kevin       4                  Nan

code so far
df=pdf.read_csv(filename)
column = df['Profession'].unique()
new_df=pd.DataFrame(column, columns=['Job])
new_df=new_df.sort_values(['Job'])
new_df = new_df.reset_index()
new_df.columns.values[0] = 'ID'
new_df['ID'] = new_df.index   1
df.loc[df['Profession] == new_df['Job'], 'Profession'] = new_df['ID']

The last line yeilds 'ValueError: Can only compare identically-labeled Series objects'
 

Комментарии:

1. Похоже, вы действительно просто хотите преобразовать эту колонку в категориальную? В котором используется приведение .astype('category')

Ответ №1:

Попробуй с replace потом

 df1.Profession = df1.Profession.replace(df2.set_index('Job').ID)