Skip to content

Commit 02b3a4d

Browse files
committed
BUG: Fix for TypeError: unorderable types" for multi index (#15457)
1 parent 7390963 commit 02b3a4d

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

pandas/core/arrays/categorical.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2538,7 +2538,10 @@ def _factorize_from_iterable(values):
25382538
ordered=values.ordered)
25392539
codes = values.codes
25402540
else:
2541-
cat = Categorical(values, ordered=True)
2541+
# The value of ordered is irrelevant since we don't use cat as such,
2542+
# but only the resulting categories, the order of which is independent
2543+
# from ordered. Set ordered to False as default due to issue #15457
2544+
cat = Categorical(values, ordered=False)
25422545
categories = cat.categories
25432546
codes = cat.codes
25442547
return codes, categories

pandas/tests/indexes/multi/test_constructor.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,13 @@ def test_from_product_empty_zero_levels():
313313
MultiIndex.from_product([])
314314

315315

316+
def test_set_index_tuple():
317+
# test for fix of issue #15457, where the following raised a TypeError
318+
result = pd.MultiIndex.from_arrays([[2, 4], [1, (1, 2)]])
319+
expected = pd.MultiIndex.from_tuples([(2, 4), (1, (1, 2))])
320+
assert result == expected
321+
322+
316323
def test_from_product_empty_one_level():
317324
result = MultiIndex.from_product([[]], names=['A'])
318325
expected = pd.Index([], name='A')

0 commit comments

Comments
 (0)