Как объединить два фрейма данных с помощью функций слияния или ВПР в Pandas

#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