Skip to content

Commit 297ec19

Browse files
tptopper-123
authored andcommitted
Proof of performance
1 parent 2ab57b2 commit 297ec19

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

pandas/core/indexes/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3085,6 +3085,10 @@ def _get_unique_index(self, dropna=False):
30853085
-------
30863086
loc : int if unique index, slice if monotonic index, else mask
30873087
3088+
Raises
3089+
------
3090+
KeyError : If key is not in self
3091+
30883092
Examples
30893093
---------
30903094
>>> unique_index = pd.Index(list('abc'))

pandas/core/indexes/category.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,10 @@ def get_loc(self, key, method=None):
426426
-------
427427
loc : int if unique index, slice if monotonic index, else mask
428428
429+
Raises
430+
------
431+
KeyError : If key is not in self
432+
429433
Examples
430434
---------
431435
>>> unique_index = pd.CategoricalIndex(list('abc'))
@@ -443,6 +447,14 @@ def get_loc(self, key, method=None):
443447
codes = self.categories.get_loc(key)
444448
if (codes == -1):
445449
raise KeyError(key)
450+
451+
if self.is_monotonic_increasing and not self.is_unique:
452+
if codes not in self._engine:
453+
raise KeyError(key)
454+
codes = self.codes.dtype.type(codes)
455+
lhs = self.codes.searchsorted(codes, side='left')
456+
rhs = self.codes.searchsorted(codes, side='right')
457+
return slice(lhs, rhs)
446458
return self._engine.get_loc(codes)
447459

448460
def get_value(self, series, key):

0 commit comments

Comments
 (0)