d1 = pd.DataFrame({'i1': [1, 2, 2], 'i2': [1, 1, 2], 'a': [10, 20, 30]}
    ).set_index(['i1', 'i2'])
d2 = pd.DataFrame({'i1': [1, 3], 'i2': [1, 2], 'b': [40, 50]}).set_index([
    'i1', 'i2'])
d3 = d1.join(d2, how='outer').dropna()
d4 = d1.join(d2, how='inner')
Inner join with MultiIndex fails if no overlap