Левый фрейм данных MASTER =
Имя
Lимя
Сумма
< /thead>
Джон
Смит-Ричардс
Дэвид
О'Брайен
< td>
Правильный кадр данных ORDERS =
Fname
Lname
Сумма
ДЭВИД
ОБРИЕН
36
Джон
Смит Ричардс
11
Ожидаемый результат Dataframe =
Fname
Lname
Сумма
Джон
Смит-Ричардс
11
< td>Дэвид
О'Брайен
36
Таблицы MASTER и ORDERS соединены LEFT-OUTER с помощью KEY = [Fname, Lname]
Обе таблицы имеют одни и те же столбцы, но строки расположены в разном порядке. Я хочу, чтобы операция соединения игнорировала регистр и игнорировала такие символы, как тире, пробелы и апострофы (например, таблицы будут объединены по значениям «johnsmithrichards» и «davidobrien»)
(На практике, фактические таблицы содержат гораздо больше столбцов, и результирующая выходная таблица должна извлечь некоторые значения из таблицы MASTER, а другие — из таблицы ORDERS, поэтому я использовал mdfcols и odfcols соответственно, чтобы включать только эти конкретные столбцы. .)
Моя попытка удалить только пробелы не сработала:
key = ["Fname", "Lname"]
mdfkey = (mdf["First Name"].str.lower() + mdf["Last Name"].str.lower()).replace(' ', '')
mdfcols = ["Fname", "Lname"]
odfkey = (odf["First Name"].str.lower() + odf["Last Name"].str.lower()).replace(' ', '')
odfCols = ["Amount"]
outputdf = pd.merge(
mdf.loc[:, mdfcols],
odf.loc[:, odfCols],
how='left', left_on=mdfkey, right_on=odfkey)
Подробнее здесь: https://stackoverflow.com/questions/786 ... ripped-key