Skip to content

BUG: factorize_from_iterables applies type to empty iterables #16844

@drudd

Description

@drudd

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions