#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)