Skip to content

Commit f45b8bc

Browse files
committed
Perf: use python int in RangeIndex.get_loc
1 parent 649ad5c commit f45b8bc

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

pandas/core/indexes/range.py

+4-7
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ def __contains__(self, key: Union[int, np.integer]) -> bool:
346346
@Appender(_index_shared_docs['get_loc'])
347347
def get_loc(self, key, method=None, tolerance=None):
348348
if is_integer(key) and method is None and tolerance is None:
349+
key = ensure_python_int(key)
349350
try:
350351
return self._range.index(key)
351352
except ValueError:
@@ -608,19 +609,15 @@ def __getitem__(self, key):
608609
"""
609610
Conserve RangeIndex type for scalar and slice keys.
610611
"""
611-
super_getitem = super().__getitem__
612-
613612
if is_scalar(key):
614613
if not lib.is_integer(key):
615614
raise IndexError("only integers, slices (`:`), "
616615
"ellipsis (`...`), numpy.newaxis (`None`) "
617616
"and integer or boolean "
618617
"arrays are valid indices")
619-
n = com.cast_scalar_indexer(key)
620-
if n != key:
621-
return super_getitem(key)
618+
new_key = int(key)
622619
try:
623-
return self._range[key]
620+
return self._range[new_key]
624621
except IndexError:
625622
raise IndexError("index {key} is out of bounds for axis 0 "
626623
"with size {size}".format(key=key,
@@ -630,7 +627,7 @@ def __getitem__(self, key):
630627
return self.from_range(new_range, name=self.name)
631628

632629
# fall back to Int64Index
633-
return super_getitem(key)
630+
return super().__getitem__(key)
634631

635632
def __floordiv__(self, other):
636633
if isinstance(other, (ABCSeries, ABCDataFrame)):

0 commit comments

Comments
 (0)