Skip to content

Commit 3cbc7f5

Browse files
committed
CLN: cleaned RangeIndex._min_fitting_element
1 parent 81dfb28 commit 3cbc7f5

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

pandas/core/index.py

+6-10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import warnings
44
import operator
55
from functools import partial
6-
from math import ceil, floor
7-
86
from sys import getsizeof
97

108
import numpy as np
@@ -4267,16 +4265,14 @@ def intersection(self, other):
42674265
return new_index
42684266

42694267
def _min_fitting_element(self, lower_limit):
4270-
"""Returns the value of the smallest element greater than the limit"""
4271-
round = ceil if self._step > 0 else floor
4272-
no_steps = round((float(lower_limit) - self._start) / self._step)
4273-
return self._start + self._step * no_steps
4268+
"""Returns the smallest element greater than or equal to the limit"""
4269+
no_steps = -(-(lower_limit - self._start) // abs(self._step))
4270+
return self._start + abs(self._step) * no_steps
42744271

42754272
def _max_fitting_element(self, upper_limit):
4276-
"""Returns the value of the largest element smaller than the limit"""
4277-
round = floor if self._step > 0 else ceil
4278-
no_steps = round((float(upper_limit) - self._start) / self._step)
4279-
return self._start + self._step * no_steps
4273+
"""Returns the largest element smaller than or equal to the limit"""
4274+
no_steps = (upper_limit - self._start) // abs(self._step)
4275+
return self._start + abs(self._step) * no_steps
42804276

42814277
def _extended_gcd(self, a, b):
42824278
"""

pandas/tests/test_index.py

+10
Original file line numberDiff line numberDiff line change
@@ -4266,6 +4266,11 @@ def test_min_fitting_element(self):
42664266
result = RangeIndex(5, 0, -1)._min_fitting_element(1)
42674267
self.assertEqual(1, result)
42684268

4269+
big_num = 500000000000000000000000
4270+
4271+
result = RangeIndex(5, big_num * 2, 1)._min_fitting_element(big_num)
4272+
self.assertEqual(big_num, result)
4273+
42694274
def test_max_fitting_element(self):
42704275
result = RangeIndex(0, 20, 2)._max_fitting_element(17)
42714276
self.assertEqual(16, result)
@@ -4279,6 +4284,11 @@ def test_max_fitting_element(self):
42794284
result = RangeIndex(5, 0, -1)._max_fitting_element(4)
42804285
self.assertEqual(4, result)
42814286

4287+
big_num = 500000000000000000000000
4288+
4289+
result = RangeIndex(5, big_num * 2, 1)._max_fitting_element(big_num)
4290+
self.assertEqual(big_num, result)
4291+
42824292
def test_pickle_compat_construction(self):
42834293
# RangeIndex() is a valid constructor
42844294
pass

0 commit comments

Comments
 (0)