diff --git a/pandas/_libs/index.pyx b/pandas/_libs/index.pyx index 8c30f55e58e14..33fa191abd123 100644 --- a/pandas/_libs/index.pyx +++ b/pandas/_libs/index.pyx @@ -272,9 +272,10 @@ cdef class IndexEngine: self._ensure_mapping_populated() values = np.array(self._get_index_values(), copy=False) targets_mask = isnaobj(targets) + values_mask = isnaobj(values) if targets_mask.any(): targets[targets_mask] = 0 - values[isnaobj(values)] = 0 + values[values_mask] = 0 stargets = set(targets) n = len(values) @@ -325,8 +326,13 @@ cdef class IndexEngine: n_alloc += 10_000 result = np.resize(result, n_alloc) - result[count] = j - count += 1 + if val == 0: + if targets_mask[i] == values_mask[j]: + result[count] = j + count += 1 + else: + result[count] = j + count += 1 # value not found else: