У меня есть два фрейма данных следующим образом:
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;
Мои вопросы:
- Каков эквивалентный синтаксис в pandas фрейме данных для приведенный выше синтаксис SQL, чтобы отфильтровать несоответствующие пары?
- Есть ли лучший способ отфильтровать несовпадающие пары?