Python pandas: отфильтровывать несовпадающие пары из двух разных фреймов данных - PullRequest
0 голосов
/ 21 января 2020

У меня есть два фрейма данных следующим образом:

1. dataframe_1

           id  joinKey
0  a000jz4hqo  [clickart, 950, 000]
1  a0006zf55o  [ca, international, arcserve, lap, desktop]
2  a00004tkvy  [noah, activity, centre, jewel, case]
3  a000g80lqo  [white, newest]
4  a0006se5bq  [singing, coach, carry, a, tune]

2. dataframe_2

           id  joinKey
0  b000jz4hqo  [clickart, 950, 000]
1  b0006zf55o  [ca, international, arcserve, lap, desktop]
2  b00004tkvy  [noah, s, ark, activity, centre, jewel, case]
3  b000g80lqo  [peachtree, jewel]
4  b0006se5bq  [singing, coach, unlimited, carry, a, tune]

Я хочу отфильтровать несовпадающие пары, чтобы подготовить фрейм данных, содержащий данные dataframe_1 и dataframe_2, для проведения дальнейшего анализа данных.

Чтобы избежать n * n сравнений, я выравниваю dataframe_1 и dataframe_2, используя pandas .DataFrame.explode.

Я получаю новые кадры данных следующим образом:

new_df1:

         id   joinKey
0  a000jz4hqo  clickart
0  a000jz4hqo       950
0  a000jz4hqo       000
0  a0006zf55o  ca
0  a0006zf55o  international

new_df2:

         id   joinKey
0  b000jz4hqo  clickart
0  b000jz4hqo       950
0  b000jz4hqo       000
0  b0006zf55o  ca
0  b0006zf55o  international

Как я понял, запрос SQL для фильтрации данных выглядит следующим образом:

SELECT a.id, b.id
FROM `new_df1 ` a,`new_df2 ` b
WHERE a.joinkey = b.joinkey AND a.id < b.id;

Мои вопросы:

  1. Каков эквивалентный синтаксис в pandas фрейме данных для приведенный выше синтаксис SQL, чтобы отфильтровать несоответствующие пары?
  2. Есть ли лучший способ отфильтровать несовпадающие пары?
...