У меня есть два файла Excel, которые я хочу объединить, как Excel VLOOKUP.В файле A уже есть созданные столбцы, и они частично заполнены (или пусты). Существует один столбец с адресами, который будет столбцом соединения для другого файла Excel, файла B. Однако в файле A больше адресов, чем в файле B, поэтому файл B будет заполнять только целевые столбцы на основе значений для этих адресов. , остальные не должны быть затронуты (поэтому они либо остаются пустыми, либо сохраняют свое старое значение).
В файле B есть столбец с адресами, а затем столбцы со значениями, которые должны быть присвоены. соответствующие адреса в файле A. В файле B есть и другие столбцы, но мне они не нужны в файле A.
Согласно моим исследованиям, для этого мне нужно внутреннее левое соединение. Общий столбец — AdressID, столбцы, которые нужно объединить, назовем их AA, BB, CC и DD.
Мои фреймы данных называются dfFileA и dfFileB.
Я попробовал следующий код:
Код: Выделить всё
dfFileA = pd.merge(dfFileA[['AA', 'BB', 'CC', 'AdressID']], dfFileB[['AA', 'BB', 'CC', 'AdressID']], on=['AdressID'], how='left')
KeyError: «['AA', 'BB', 'CC'] отсутствует в индексе»
Где это ошибка?
Большое спасибо!
[EDIT:]
Вот пример моей проблемы, однако вот она создает новые столбцы с тем же именем, но заканчивающиеся на _y, и переименовывает исходные столбцы, заканчивающиеся на _x (я не знаю, почему это происходит в этом примере, а не в исходном файле):
Код: Выделить всё
import pandas as pd
FileA = {
'AA' : ['', 'DEF', '', 'JKL'],
'BB' : ['MNO', '', 'STU', ''],
'CC' : ['WX', '', 'GDG', 'GJ'],
'DD' : ['GDSG', 'OFHHJHFS', 'GDJIO', 'GDKOS'],
'EE' : ['GHDH', 'IGHDH', 'GDJG', 'GODJS'],
'AdressID' : ['Great Street 1', 'Amazing Street 5', 'Perfect Street 21', 'Fantastic Street 88']
}
FileB = {
'AA' : ['ABC', '', 'GHI', ''],
'BB' : ['', 'PQR', '', 'FAS'],
'CC' : ['', 'YZ', '', 'GJ'],
'FF' : ['GDSGH', 'GDKOJ', 'GDD', 'GDOKJ'],
'GG' : ['GIOJD', 'GDOK', 'GDJI', 'DGOJ'],
'AdressID' : ['Great Street 1', 'Amazing Street 5', 'Perfect Street 21', 'Fantastic Street 88']
}
dfFileA = pd.DataFrame(FileA)
dfFileB = pd.DataFrame(FileB)
print(dfFileA)
print(dfFileB)
merged = pd.merge(dfFileA, dfFileB, on='AdressID', how='inner')
print(merged)
Код: Выделить всё
merged = {
'AA' : ['ABC', 'DEF', 'GHI', 'JKL'],
'BB' : ['MNO', 'PQR', 'STU', 'FAS'],
'CC' : ['WX', 'YZ', 'GDG', 'GJ'],
'DD' : ['GDSG', 'OFHHJHFS', 'GDJIO', 'GDKOS'],
'EE' : ['GHDH', 'IGHDH', 'GDJG', 'GODJS'],
'AdressID' : ['Great Street 1', 'Amazing Street 5', 'Perfect Street 21', 'Fantastic Street 88']
}
Поэтому я хочу сохранить только те столбцы из FileB, которые существуют также в FileA. В качестве альтернативы я мог бы просто удалить их выборочно после merge/combine_first.
[Изменить:
Я изменил пример, мне следовало поместить больше разных столбцов в FileA и FileB, которые не существует в другом.
Подробнее здесь: https://stackoverflow.com/questions/789 ... hon-pandas