diff --git a/pandas/core/arrays/categorical.py b/pandas/core/arrays/categorical.py index eebdfe8a54a9d..713e34d20dd0d 100644 --- a/pandas/core/arrays/categorical.py +++ b/pandas/core/arrays/categorical.py @@ -1198,7 +1198,7 @@ def map(self, mapper): categories=new_categories, ordered=self.ordered) except ValueError: - return np.take(new_categories, self._codes) + return take_1d(new_categories, self._codes) __eq__ = _cat_compare_op('__eq__') __ne__ = _cat_compare_op('__ne__') diff --git a/pandas/tests/series/test_apply.py b/pandas/tests/series/test_apply.py index b717d75d835d0..f7c4554f058d7 100644 --- a/pandas/tests/series/test_apply.py +++ b/pandas/tests/series/test_apply.py @@ -164,6 +164,15 @@ def test_apply_dict_depr(self): with tm.assert_produces_warning(FutureWarning): tsdf.A.agg({'foo': ['sum', 'mean']}) + def test_apply_categorical_with_nan_values(self): + # GH 20714 + s1 = pd.Series(['1-1', '1-1', np.NaN], dtype='category') + s1 = s1.apply(lambda x: x.split('-')[0]) + + s2 = pd.Series(['1', '1', np.NaN], dtype='category') + + tm.assert_series_equal(s1, s2, check_dtype=False) + class TestSeriesAggregate(TestData):