Skip to content

Commit 84e788b

Browse files
committed
BUG/PERF: handle a slice correctly in get_level_indexer
1 parent d9e00d2 commit 84e788b

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

pandas/indexes/multi.py

+7-13
Original file line numberDiff line numberDiff line change
@@ -2203,20 +2203,14 @@ def convert_indexer(start, stop, step, indexer=indexer, labels=labels):
22032203
else:
22042204

22052205
loc = level_index.get_loc(key)
2206-
if level > 0 or self.lexsort_depth == 0:
2206+
if isinstance(loc, slice):
2207+
return loc
2208+
elif level > 0 or self.lexsort_depth == 0:
22072209
return np.array(labels == loc, dtype=bool)
2208-
else:
2209-
# sorted, so can return slice object -> view
2210-
try:
2211-
loc = labels.dtype.type(loc)
2212-
except TypeError:
2213-
# this occurs when loc is a slice (partial string indexing)
2214-
# but the TypeError raised by searchsorted in this case
2215-
# is catched in Index._has_valid_type()
2216-
pass
2217-
i = labels.searchsorted(loc, side='left')
2218-
j = labels.searchsorted(loc, side='right')
2219-
return slice(i, j)
2210+
2211+
i = labels.searchsorted(loc, side='left')
2212+
j = labels.searchsorted(loc, side='right')
2213+
return slice(i, j)
22202214

22212215
def get_locs(self, tup):
22222216
"""

0 commit comments

Comments
 (0)