Как присоединить Pandas фреймов данных, но использовать только строки в правом фрейме данных только один раз для каждой строки в левом фрейме данных? - PullRequest
0 голосов
/ 18 июня 2020

Итак, у меня есть два таких фрейма данных:

df1 =

ID      Amount    Reference
2        15.34    ABC
2        15.34    DEF

df2 =

ID_r      Amount_r    Reference_r
2        15.34    123
2        15.34    123
2        15.34    345
3        15.34    456

Я хочу присоединиться к DF1 с любыми двумя значениями на df2 до тех пор, пока идентификатор и сумма совпадают

Итак, я хочу, чтобы мой вывод был примерно таким же, как

ID      Amount    Reference   ID_r      Amount_r    Reference_r
2        15.34    ABC         2          15.34          123
2        15.34    DEF         2          15.34          345  

Однако, выполняя обычное левое соединение, такое как pd.merge (df1, df2, how = left) обеспечивает вывод 6 строк со всеми возможными комбинациями. Мне просто нужно присоединиться к df1 для двух уникальных строк данных в df2.

Чтобы расширить пример, скажем, у меня есть фрейм данных df3

df3 =

ID_r      Amount_r    Reference_r
2        15.34        789

Я хочу объединить df1 с df3, и поскольку в df3 доступна только одна строка данных, я хочу, чтобы результат слияния был

ID      Amount    Reference   ID_r      Amount_r    Reference_r
2        15.34    ABC         2          15.34          789
2        15.34    DEF         N/A        N/A            N/A

Поскольку я объединяю только уникальные правые строки, там Нет второй строки данных на df3 для слияния с df1. Однако выполнение обычного левого соединения по идентификатору и сумме даст 2 строки данных, причем строка df3 используется дважды в df1.

Вывод левого соединения df1 и df3 по идентификатору и количеству (не требуется)

ID      Amount    Reference   ID_r      Amount_r    Reference_r
2        15.34    ABC         2          15.34          789
2        15.34    DEF         2          15.34          789

Это в основном для того, чтобы я мог подтвердить наличие уникальной строки данных в df2 / df3 для каждой строки данных в df1 с тем же идентификатором и количеством, однако я не могу использовать ту же строку данных в df2 дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...