# use the `add` method with `fill_value=0` parameter. df1 = pd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}}) df2 = pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}}) df1.add(df2, fill_value=0) val a 2.0 b 4.0 c 3.0 d 3.0 # --- # # ## MultiIndex example idx1 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'B'), ('b', 'A'), ('b', 'D')]) idx2 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'C'), ('b', 'A'), ('b', 'C')]) np.random.seed(