Vlookup на python с 2 кадрами данных

#python #pandas

#питон #панды

Вопрос:

У меня есть df ниже:

 d1 = {'id': ['a','b','c'], 'ref': ['apple','orange','banana']} df1 = pd.DataFrame(d1)  d2 = {'id': ['a','b','c'], 'apple': [1,2,3], 'orange': [4,5,6], 'banana':[7,8,9]} df2 = pd.DataFrame(d2)  

Нужна помощь. Что я хотел бы сделать, так это создать новый столбец в df1, который заполняет значения из df2 для каждой ссылки по идентификатору

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

1. IIUC, новые значения столбцов будут такими [1, 5, 9] , верно?

2. Да, это был бы результат. Приношу извинения за то, что не опубликовал результаты. Можете сделать это сейчас, если понадобится

3. Да, добавьте это к самому вопросу.

Ответ №1:

Давайте melt тогда сделаем merge

 out = df1.merge(df2.melt('id',var_name='ref'),how='left') Out[72]:   id ref value 0 a apple 1 1 b orange 5 2 c banana 9  

Больше похоже vlookup

 df2 = df2.set_index('id') df1['new'] = df2.values[df2.index.get_indexer(df1.id),df2.columns.get_indexer(df1.ref) ] df1 Out[76]:   id ref new 0 a apple 1 1 b orange 5 2 c banana 9