From d3528738310b10530580a03c4abc9306e74fc232 Mon Sep 17 00:00:00 2001 From: Kaiqi Dong Date: Mon, 10 Dec 2018 22:27:45 +0100 Subject: [PATCH 1/3] first try to implement alternative for where --- pandas/core/indexes/category.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index f1a05ec607b59..63775c5044397 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -507,8 +507,7 @@ 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) + cat = CategoricalIndex(self.values.where(cond, other), dtype=self.dtype) return self._shallow_copy(cat, **self._get_attributes_dict()) def reindex(self, target, method=None, level=None, limit=None, From 3371d2cfb56086e8a5091091730e2c99c2d3da12 Mon Sep 17 00:00:00 2001 From: Kaiqi Dong Date: Mon, 10 Dec 2018 22:31:27 +0100 Subject: [PATCH 2/3] pep8 --- pandas/core/indexes/category.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 63775c5044397..d883ba87fb1d3 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -507,7 +507,8 @@ def where(self, cond, other=None): # 3. Rebuild CategoricalIndex. if other is None: other = self._na_value - cat = CategoricalIndex(self.values.where(cond, other), dtype=self.dtype) + cat = CategoricalIndex(self.values.where(cond, other), + dtype=self.dtype) return self._shallow_copy(cat, **self._get_attributes_dict()) def reindex(self, target, method=None, level=None, limit=None, From d7588f5d07921b241fde4ad53d62d7c0e8b9d37c Mon Sep 17 00:00:00 2001 From: Kaiqi Dong Date: Mon, 10 Dec 2018 23:17:04 +0100 Subject: [PATCH 3/3] testing --- pandas/core/indexes/category.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index d883ba87fb1d3..7233780843c48 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -507,7 +507,9 @@ def where(self, cond, other=None): # 3. Rebuild CategoricalIndex. if other is None: other = self._na_value - cat = CategoricalIndex(self.values.where(cond, other), + 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())