#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