Skip to content

Commit b2a281a

Browse files
committed
Remove duplicate codes
1 parent 88a85b7 commit b2a281a

File tree

2 files changed

+7
-33
lines changed

2 files changed

+7
-33
lines changed

pandas/_libs/index.pyx

+3-32
Original file line numberDiff line numberDiff line change
@@ -505,38 +505,6 @@ cdef class PeriodEngine(Int64Engine):
505505
def _call_monotonic(self, values):
506506
return super(PeriodEngine, self)._call_monotonic(values.view('i8'))
507507

508-
cdef _maybe_get_bool_indexer(self, object val):
509-
cdef:
510-
ndarray[uint8_t, cast=True] indexer
511-
ndarray[int64_t] values
512-
int count = 0
513-
Py_ssize_t i, n
514-
int last_true
515-
516-
if not util.is_integer_object(val):
517-
raise KeyError(val)
518-
519-
values = self._get_index_values().view('i8')
520-
n = len(values)
521-
522-
result = np.empty(n, dtype=bool)
523-
indexer = result.view(np.uint8)
524-
525-
for i in range(n):
526-
if values[i] == val:
527-
count += 1
528-
indexer[i] = 1
529-
last_true = i
530-
else:
531-
indexer[i] = 0
532-
533-
if count == 0:
534-
raise KeyError(val)
535-
if count == 1:
536-
return last_true
537-
538-
return result
539-
540508
def get_indexer(self, values):
541509
cdef ndarray[int64_t, ndim=1] ordinals
542510

@@ -568,6 +536,9 @@ cdef class PeriodEngine(Int64Engine):
568536

569537
return super(PeriodEngine, self).get_indexer_non_unique(ordinal_array)
570538

539+
cdef _get_index_values_for_bool_indexer(self):
540+
return self._get_index_values().view('i8')
541+
571542

572543
cpdef convert_scalar(ndarray arr, object value):
573544
# we don't turn integers

pandas/_libs/index_class_helper.pxi.in

+4-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ cdef class {{name}}Engine(IndexEngine):
6666
raise KeyError(val)
6767
{{endif}}
6868

69-
values = self._get_index_values()
69+
values = self._get_index_values_for_bool_indexer()
7070
n = len(values)
7171

7272
result = np.empty(n, dtype=bool)
@@ -86,6 +86,9 @@ cdef class {{name}}Engine(IndexEngine):
8686
return last_true
8787

8888
return result
89+
90+
cdef _get_index_values_for_bool_indexer(self):
91+
return self._get_index_values()
8992
{{endif}}
9093

9194
{{endfor}}

0 commit comments

Comments
 (0)