Добавить в dataframe колонку из другого по условию

Есть 2 файла excel. Первый: введите сюда описание изображения

Второй: введите сюда описание изображения

Желаемый результат: введите сюда описание изображения

Пытаюсь объединить:

df1 = pd.read_excel('Номенклатура.xlsx', sheet_name='Лист3')
df2 = pd.read_excel('Номенклатура.xlsx', sheet_name='Лист4')

a = df1.merge(df2[['Номенклатура наименование полное']])

a.to_excel(r'Номенклатура1.xlsx', index=False)

Подскажите, как можно достичь объединения таблиц?


Ответы (1 шт):

Автор решения: CrazyElf

Попробуйте так:

a = df1.merge(df2, on='Номенклатура наименование полное')

Но потом ещё придётся с названиями колонок поработать, к ним припишутся суффиксы (по умолчанию _x и _y).

Если нужны только определённые колонки датафреймов - укажите их:

a = df1[['Колонка1','Колонка2','Номенклатура наименование полное']].merge(df2[['Колонка3','Колонка4','Номенклатура наименование полное']], on='Номенклатура наименование полное')

Если нужно, чтобы в результат попали строки с пустыми колонками - измените тип объединения через параметр how= который по умолчанию выставляется в inner. Например, можно поменять на outer и тогда в результат попадут и строки, которым не находится соответствия в одной из таблиц:

.merge(..., how='outer')

Документация, где можно посмотреть все параметры.

→ Ссылка