Closed
Description
Code Sample, a copy-pastable example if possible
In [1]: import pandas as pd
In [2]: A = pd.MultiIndex(levels=[[], []], labels=[[], []], names=['a', 'b'])
In [3]: B = pd.MultiIndex.from_arrays(arrays=[[], []], names=['a', 'b'])
In [4]: A
Out[4]:
MultiIndex(levels=[[], []],
labels=[[], []],
names=[u'a', u'b'])
In [5]: B
Out[5]:
MultiIndex(levels=[[], []],
labels=[[], []],
names=[u'a', u'b'])
In [6]: pd.testing.assert_index_equal(A, B)
...
AssertionError: MultiIndex level [0] are different
MultiIndex level [0] classes are not equivalent
[left]: Index([], dtype='object', name=u'a')
[right]: Float64Index([], dtype='float64', name=u'a')
Problem description
Empty iterables should be factorized to object types rather than Float64Index
. This causes MultiIndexes created from the constructor to not equal those created using .from_arrays
, which relies on factorization (ref PR #16782).