I am trying to reindex one multi-index dataframe based on another multi-index dataframe. For singly-indexed dfs, this works:

```
index1 = range(3, 7)
index2 = range(1, 11)
values = [np.random.random() for x in index1]

df = pd.DataFrame(values, index=index1, columns=["values"])

print(df)
print(df.reindex(index2, fill_value=0))

```

Output:

```
     values
3  0.458003
4  0.945828
5  0.783369
6  0.784599
      values
1   0.000000
2   0.000000
3   0.458003
4   0.945828
5   0.783369
6   0.784599
7   0.000000
8   0.000000
9   0.000000
10  0.000000

```

New rows are added, based on `index2`, and the value for `y` is set to `0`. This is what I expect. 

Now, let's try something similar for a multi-index df:

```
data_dict = {
    "scan": 1,
    "x": [2,3,5,7,8,9],
    "y": [np.random.random() for x in range(1,7)]
}

index1 = ["scan", "x"]
df = pd.DataFrame.from_dict(data_dict).set_index(index)
print(df)

index2 = list(range(4, 13))
print(df.reindex(index2, level="x").fillna(0))

```

Output:

```
               y
scan x          
1    2  0.771531
     3  0.451761
     5  0.434075
     7  0.135785
     8  0.309137
     9  0.838330
               y
scan x          
1    5  0.434075
     7  0.135785
     8  0.309137
     9  0.838330

```

What gives? The output is different than the input: the first two values have been removed. But the other values - intermediate (e.g., `4`) or larger (e.g., `10` or higher) - are not there. What am I missing?

The actual dataframes have 6 index levels and tens to hundreds of rows, but I think this code captures the problem. I spent a little time looking at `df.realign`, `df.join`, and a lot of time scouring SO, but I haven't found a solution. Apologies if it's a duplicate!