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