необходимо отфильтровать строки, представленные в одном кадре данных на другом - PullRequest
0 голосов
/ 07 июня 2018

У меня есть два фрейма данных в пандах, из которых мне нужно получить строки со всеми соответствующими значениями столбцов во втором, которые не находятся в первом.
ex

df A
A B C D 
6 4 1 6   
7 6 6 3
1 6 2 9   
8 0 4 9 
1 0 2 3 
8 4 7 5
4 7 1 1 
3 7 3 4 
5 2 8 8 
3 2 8 8 
5 2 8 8

df B
A B C D
1 0 2 3
8 4 7 5
4 7 1 1 
1 0 2 3 
8 4 7 5 
4 7 1 1 
3 7 3 4 
5 2 8 8 
1 1 1 1
2 2 2 2
1 1 1 1

req

A B C D
1 1 1 1
2 2 2 2
1 1 1 1

Я попытался использовать pd.merge и inner / left для всех столбцов, но это занимает намного больше вычислительного времени и ресурсов, если строк и столбцов больше.есть ли другой способ обойти это, например, перебирать каждую строку dfA с dfB во всех столбцах, а затем выбирать те, которые есть только в dfB?

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете использовать merge с параметром ind.

df_b.merge(df_a, on=['A','B','C','D'], 
           how='left', indicator='ind')\
    .query('ind == "left_only"')\
    .drop('ind', axis=1)

Выход:

    A  B  C  D
9   1  1  1  1
10  2  2  2  2
11  1  1  1  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...