indicator = True in merge command will tell you which join was applied by creating new column _merge with three possible values:
left_onlyright_onlyboth
Keep right_only and left_only. That is it.
outer_join = TableA.merge(TableB, how = 'outer', indicator = True)
anti_join = outer_join[~(outer_join._merge == 'both')].drop('_merge', axis = 1)
easy!
Here is a comparison with a solution from piRSquared:
1) When run on this example matching based on one column, piRSquared’s solution is faster.
2) But it only works for matching on one column. If you want to match on several columns – my solution works just as fine as with one column.
So it’s up for you to decide.
