#python #pandas #dataframe
Вопрос:
У меня есть два фрейма данных:
df1
EmID Employee Name
0 12345 Frist Person
1 35658 Second Person
2 65865 Third Person
3 28568 Foo Person
4 26699 Boo Person
df2
Manager ID Subordinate ID
1 28568 35658
2 12466 12358
3 35658 12345
Я хочу объединить эти два фрейма данных, чтобы мой вывод выглядел так:
Manger Name Emp Name
1 Foo Person Second Person
Я использовал df2.merge(df1, left_on = ManagerID, right_on = EmID)
, но я не получил то, что искал. Я также попытался использовать for
цикл, который по-прежнему не дает мне желаемого результата. Есть идеи? Спасибо 🙂
Комментарии:
1. Используйте left_on для подчиненного идентификатора, у вас почти получилось
2. @Riley Я тоже пробовал этот вариант, но он не даст мне ответа. Я должен был получить
suffix_x
иsuffix_y
, но я этого не сделал.3. Вам не нужно беспокоиться о суффиксе, общих имен столбцов нет. Возможно, вы хотите «правое» соединение (через параметр «как») вместо «левого» по умолчанию?
Ответ №1:
Предполагая, что все идентификаторы в df2
также присутствуют в df1
, мы можем установить индекс df1
в EmpID
и выбрать Employee Name
столбец для создания замещающих рядов, а затем использовать DataFrame.replace
для замены значений в df2
.
df3 = df2.replace(df1.set_index('EmID')['Employee Name'])
df3.columns = ['Manager name', 'Emp name']
>>> df3
Manager name Emp name
1 Foo Person Second Person