«Достаточно близкое» сопоставление строк из двух кадров данных Pandas, сравнивающих несколько столбцовPython

Программы на Python
Anonymous
«Достаточно близкое» сопоставление строк из двух кадров данных Pandas, сравнивающих несколько столбцов

Сообщение Anonymous »

У меня есть два фрейма данных с двумя общими столбцами. Я хочу пометить записи в первом кадре данных, которые имеют совпадение двух столбцов во втором, где второе совпадение является «нечетким». Ни один из столбцов не является уникальным ключом; значения могут повторяться в обоих из них. Представьте, например, что мои соответствующие столбцы — это столбец города и столбец даты.
Входной кадр данных 1 ():



город
дата




Нью-Йорк
1 января 2024 г.


Нью-Йорк
05.01.2024


Чикаго
02.01.2024


Чикаго
5 января 2024 г.


Хьюстон
1/3 /2024



Входной кадр данных 2 ():



город
дата




Нью-Йорк
2 января 2024 г.


Чикаго
05.01.2024



Мой желаемый результат — пометить как True каждую запись в df1, имеющую запись в df2, которая точно соответствует городу И соответствует внутри одного день даты, а все остальные записи помечены как False.
Выходной кадр данных 1:



город
дата
в паре




Новый Йорк
1 января 2024 г.
Верно


Нью-Йорк
5 января 2024 г.
Неверно


Чикаго
2 января 2024 г.
Неверно


Чикаго
05.01.2024
Верно

Хьюстон
3 января 2024 г.
Ложь



Если бы я искал точные совпадения в обоих столбцах, Проблема была бы очень простой: я бы заархивировал два столбца, которые будут использоваться для сопоставления, и применил бы тест isin внутри методаwhere:

Код: Выделить всё

df1['zipcol'] = list(zip(df1.city, df1.date))
df2['zipcol'] = list(zip(df2.city, df2.date))
df1['paired'] = np.where(df1['zipcol'].isin(df2['zipcol']), True, False)
#some overhead to drop the zipped columns
Каков наиболее эффективный способ выполнить этот тип сравнения, за исключением одного (или нескольких) критериев, которые не являются точными, но определяются с точки зрения значений из 2-го кадра данных, в диапазоне значений, центрированных по значениям, начиная с 1-го?
Заключительное примечание: меня не беспокоит возможность дублирования совпадений. Если совпадения один-ко-многим все же встречаются, их можно будет обработать на этапе постобработки позже.

Подробнее здесь: https://stackoverflow.com/questions/788 ... multiple-c

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