Python Pandas: присоединение к регистронезависимому и лишенному ключуPython

Программы на Python
Anonymous
Python Pandas: присоединение к регистронезависимому и лишенному ключу

Сообщение Anonymous »

Левый фрейм данных 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

Вернуться в «Python»