Skip to content

Commit a23365b

Browse files
committed
BUG/PERF: handle a slice correctly in get_level_indexer
1 parent 71f621f commit a23365b

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
@@ -2071,20 +2071,14 @@ def convert_indexer(start, stop, step, indexer=indexer, labels=labels):
20712071
else:
20722072

20732073
loc = level_index.get_loc(key)
2074-
if level > 0 or self.lexsort_depth == 0:
2074+
if isinstance(loc, slice):
2075+
return loc
2076+
elif level > 0 or self.lexsort_depth == 0:
20752077
return np.array(labels == loc, dtype=bool)
2076-
else:
2077-
# sorted, so can return slice object -> view
2078-
try:
2079-
loc = labels.dtype.type(loc)
2080-
except TypeError:
2081-
# this occurs when loc is a slice (partial string indexing)
2082-
# but the TypeError raised by searchsorted in this case
2083-
# is catched in Index._has_valid_type()
2084-
pass
2085-
i = labels.searchsorted(loc, side='left')
2086-
j = labels.searchsorted(loc, side='right')
2087-
return slice(i, j)
2078+
2079+
i = labels.searchsorted(loc, side='left')
2080+
j = labels.searchsorted(loc, side='right')
2081+
return slice(i, j)
20882082

20892083
def get_locs(self, tup):
20902084
"""

0 commit comments

Comments
 (0)