diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index f1a05ec607b59..7233780843c48 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -507,8 +507,10 @@ def where(self, cond, other=None): # 3. Rebuild CategoricalIndex. if other is None: other = self._na_value - values = np.where(cond, self.values, other) - cat = Categorical(values, dtype=self.dtype) + copied_cat = Categorical(self.values, dtype=self.dtype) + copied_cat[cond] = other + cat = CategoricalIndex(copied_cat, + dtype=self.dtype) return self._shallow_copy(cat, **self._get_attributes_dict()) def reindex(self, target, method=None, level=None, limit=None,