In [4]:
left.merge(right, on='key', how='right', indicator=True)\
         .query('_merge == "right_only"')\
         .drop(columns=['_merge'])
Out[4]:
key value_x value_y
2 d NaN 4
In [5]:
right[~right.key.isin(left.key)]
Out[5]:
key value
2 d 4