File tree 3 files changed +9
-4
lines changed
3 files changed +9
-4
lines changed Original file line number Diff line number Diff line change @@ -167,7 +167,7 @@ Missing
167
167
168
168
MultiIndex
169
169
^^^^^^^^^^
170
- -
170
+ - Bug in :meth: ` MultiIndex.reindex ` when passing a `` level `` that corresponds to an `` ExtensionDtype `` level ( :issue: ` 42043 `)
171
171
-
172
172
173
173
I/O
Original file line number Diff line number Diff line change @@ -2503,9 +2503,7 @@ def reindex(
2503
2503
target = ibase .ensure_has_len (target )
2504
2504
if len (target ) == 0 and not isinstance (target , Index ):
2505
2505
idx = self .levels [level ]
2506
- attrs = idx ._get_attributes_dict ()
2507
- attrs .pop ("freq" , None ) # don't preserve freq
2508
- target = type (idx )._simple_new (np .empty (0 , dtype = idx .dtype ), ** attrs )
2506
+ target = idx [:0 ]
2509
2507
else :
2510
2508
target = ensure_index (target )
2511
2509
target , indexer , _ = self ._join_level (
Original file line number Diff line number Diff line change @@ -84,6 +84,13 @@ def test_reindex_lvl_preserves_type_if_target_is_empty_list_or_array():
84
84
assert idx .reindex ([], level = 0 )[0 ].levels [0 ].dtype .type == np .int64
85
85
assert idx .reindex ([], level = 1 )[0 ].levels [1 ].dtype .type == np .object_
86
86
87
+ # case with EA levels
88
+ cat = pd .Categorical (["foo" , "bar" ])
89
+ dti = pd .date_range ("2016-01-01" , periods = 2 , tz = "US/Pacific" )
90
+ mi = MultiIndex .from_product ([cat , dti ])
91
+ assert mi .reindex ([], level = 0 )[0 ].levels [0 ].dtype == cat .dtype
92
+ assert mi .reindex ([], level = 1 )[0 ].levels [1 ].dtype == dti .dtype
93
+
87
94
88
95
def test_reindex_base (idx ):
89
96
idx = idx
You can’t perform that action at this time.
0 commit comments