Входной кадр данных 1 (
Код: Выделить всё
df1
город
дата
Нью-Йорк
1 января 2024 г.
Нью-Йорк
05.01.2024
Чикаго
02.01.2024
Чикаго
5 января 2024 г.
Хьюстон
1/3 /2024
Входной кадр данных 2 (
Код: Выделить всё
df2
город
дата
Нью-Йорк
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
Заключительное примечание: меня не беспокоит возможность дублирования совпадений. Если совпадения один-ко-многим все же встречаются, их можно будет обработать на этапе постобработки позже.
Подробнее здесь: https://stackoverflow.com/questions/788 ... multiple-c