pandas как удалить строку, фрагмент которой содержит строку из другой таблицы

Есть два датафрейма:

df_01 = pd.DataFrame({"A": ["1", "1", "1", "2", "2", "2"],
                      "B": ["1", "2", "3", "1", "2", "3"],
                      "C": ["a", "b", "c", "d", "e", "f"]})

и

df_02 = pd.DataFrame({"A": ["1", "2"],
                      "B": ["1", "1"]})

Нужно из df_01 удалить те строки, где есть комбинация "A" и B" из df_02.

Т.е. на выходе должно быть:

    A   B   C
0   1   2   b
1   1   3   c
2   2   2   e
3   2   3   f

Я пробовал через query:

df_01.query('A != "df_02.A" & B != "df_02.B"')

Но не фильтруется.

Также пробовал через drop:

df_01 = df_01.drop(df_01[(df_01.A != df_02.A) & (df_01.B != df_02.B)].index)

Но ValueError: Can only compare identically-labeled Series objects


Ответы (1 шт):

Автор решения: strawdog

делаете простую конкатенацию и удаляете дубликаты по нужным колонкам:

res = pd.concat([df_01,df_02]).drop_duplicates(subset=["A", "B"], keep=False)

res:

   A  B  C
1  1  2  b
2  1  3  c
4  2  2  e
5  2  3  f
→ Ссылка