Подстрока, совпадающая в Pandas данных - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть два pandas кадра данных, которые я хотел бы сопоставить, которые включают два столбца, которые относительно аналогичны друг другу, назовем их name и address. Однако столбец имени в обоих информационных кадрах не всегда содержит полное имя. Я хотел бы найти подстроки столбца имени в каждом из них и вернуть список возможных совпадений.

Ранее я просматривал этот пост Переполнение стека , в котором рекомендовалось использовать pandas str.extract и insert методы. Мой код выглядит примерно так:

pat = "|".join(left_df.name) 
right_df.insert(0,'name_substring',right_df.name.str.extract("(" + pat + ')', expand=False)

pat = "|".join(right_df.name) 
left_df.insert(0,'name_substring',left_df.name.str.extract("(" + pat + ')', expand=False)

left_within = left_df.merge(right_df, left_on=['name_substring','address'], right_on=['name', 'address'])
right_within = left_df.merge(right_df, right_on=['name_substring','address'], left_on=['name', 'address'])

merged_df = pd.concat([left_df, right_df], axis=0)

. Этот подход дает хорошие результаты, но коллега, который выполнил тот же анализ с использованием функции SAS find, смог получить большее количество потенциальных совпадений. Сначала я подумал, что этот подход предполагает, что в каждой записи может быть только одно потенциальное совпадение для каждой записи, а метод str.extract выполняет поиск только первого экземпляра подстроки, хотя на самом деле их может быть несколько.

Благодарим вас за любые предложения по получению моего кода python, чтобы получить более точные результаты.

...