BUG: Fixes KeyError when indexes don't overlap.
Closes #10291 

Can you edit your first post to include "Closes #10291, Closes #12133" so that Github will auto-close those issues when we merge?

Also would need a release note in `doc/source/whatsnew/v0.18.0` under bug fixes and maybe add a note to the docstring of `crosstab` explaining that this is the outcome for non-overlapping indices. Thanks!
 you need a test to cover #12133 
 pls add a whatsnew as well
 Thought it may be easier in the near term to reduce the scope of this change to fixing the issue associated with #10291 and not attempt a fix at #12133.

I've added #12133 to my todo list so I'll try to get back to it.  Hopefully it's as simple as adding a test case.
 thanks @tshauck 
 `if values_passed and not values_multi and not table.empty:`
Excuse me, but how does this cover #12133? index names are dropped earlier in `if not dropna:` block. We need to pass names to `from_arrays`:

```
m = MultiIndex.from_arrays(cartesian_product(table.index.levels), names=table.index.names)
...
m = MultiIndex.from_arrays(cartesian_product(table.columns.levels), names=table.columns.names)
```

UPD: sorry, i thought that `it's as simple as adding a test case` means that it covers #12133 but tests are needed
UPD2: #12327
 if u read the comments about it does not cover 12133 
