I have two datasets:
df1 = pd.DataFrame(data = {'label1': ['A', 'A', 'B', 'C'], 'label2': ['a', 'b', 'c', 'd'], 'value': [1,2,3,4]})
df2 = pd.DataFrame(data = {'label1': ['A', 'A', 'D', 'E'], 'label'2': ['a', 'd', 'c','e'], 'value2': [10,12,23,14]})
I would like to perform an anti-join so that the resulting data frame contains the rows of df1 where the key [['label1', 'label2']] is not found in df2.
The resulting df should be:
label1 label2 value
A b 2
B c 3
C d 4
In R using dplyr, the code would be:
df3 = anti_join(df1, df2, by = c("label1", "label2"))
Thanks for your help.
Using
isin
withtuple
Option1
Simply perform an inner join and remove the intersecting rows from
df1
.Option2:
You need to do a left join and see how many of the rows shows up as null for the column from
df2
.Output: