Skip to content

Commit 7eabf30

Browse files
authored
BUG: MultiIndex.set_levels raising when setting empty level (#48643)
1 parent 5c66e65 commit 7eabf30

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

doc/source/whatsnew/v1.6.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ Missing
176176

177177
MultiIndex
178178
^^^^^^^^^^
179+
- Bug in :class:`MultiIndex.set_levels` raising ``IndexError`` when setting empty level (:issue:`48636`)
179180
- Bug in :meth:`MultiIndex.unique` losing extension array dtype (:issue:`48335`)
180181
- Bug in :meth:`MultiIndex.union` losing extension array (:issue:`48498`, :issue:`48505`)
181182
- Bug in :meth:`MultiIndex.append` not checking names for equality (:issue:`48288`)

pandas/core/indexes/multi.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4028,7 +4028,7 @@ def _require_listlike(level, arr, arrname: str):
40284028
if level is not None and not is_list_like(level):
40294029
if not is_list_like(arr):
40304030
raise TypeError(f"{arrname} must be list-like")
4031-
if is_list_like(arr[0]):
4031+
if len(arr) > 0 and is_list_like(arr[0]):
40324032
raise TypeError(f"{arrname} must be list-like")
40334033
level = [level]
40344034
arr = [arr]

pandas/tests/indexes/multi/test_get_set.py

+8
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,14 @@ def test_set_levels_pos_args_deprecation():
476476
tm.assert_index_equal(result, expected)
477477

478478

479+
def test_set_empty_level():
480+
# GH#48636
481+
midx = MultiIndex.from_arrays([[]], names=["A"])
482+
result = midx.set_levels(pd.DatetimeIndex([]), level=0)
483+
expected = MultiIndex.from_arrays([pd.DatetimeIndex([])], names=["A"])
484+
tm.assert_index_equal(result, expected)
485+
486+
479487
def test_set_codes_pos_args_depreciation(idx):
480488
# https://github.com/pandas-dev/pandas/issues/41485
481489
msg = (

0 commit comments

Comments
 (0)