diff --git a/doc/source/v0.14.1.txt b/doc/source/v0.14.1.txt index 86e73ccbde01c..c764d92376c33 100644 --- a/doc/source/v0.14.1.txt +++ b/doc/source/v0.14.1.txt @@ -213,7 +213,8 @@ Bug Fixes - Bug where bool objects were converted to ``nan`` in ``convert_objects`` (:issue:`7416`). - Bug in ``quantile`` ignoring the axis keyword argument (:issue`7306`) - +- Bug where ``nanops._maybe_null_out`` doesn't work with complex numbers + (:issue:`7353`) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index b40334c1857ac..c0cb2e6ee6ceb 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -547,7 +547,10 @@ def _maybe_null_out(result, axis, mask): if axis is not None: null_mask = (mask.shape[axis] - mask.sum(axis)) == 0 if null_mask.any(): - result = result.astype('f8') + if np.iscomplexobj(result): + result = result.astype('c16') + else: + result = result.astype('f8') result[null_mask] = np.nan else: null_mask = mask.size - mask.sum() diff --git a/pandas/tests/test_nanops.py b/pandas/tests/test_nanops.py index e704c95608494..d0df6c2dc3e8b 100644 --- a/pandas/tests/test_nanops.py +++ b/pandas/tests/test_nanops.py @@ -239,7 +239,6 @@ def test_nanall(self): def test_nansum(self): self.check_funs(nanops.nansum, np.sum, - allow_complex=False, allow_str=False, allow_date=False) def _nanmean_wrap(self, value, *args, **kwargs): @@ -291,13 +290,11 @@ def _minmax_wrap(self, value, axis=None, func=None): def test_nanmin(self): func = partial(self._minmax_wrap, func=np.min) self.check_funs(nanops.nanmin, func, - allow_complex=False, allow_str=False, allow_obj=False) def test_nanmax(self): func = partial(self._minmax_wrap, func=np.max) self.check_funs(nanops.nanmax, func, - allow_complex=False, allow_str=False, allow_obj=False) def _argminmax_wrap(self, value, axis=None, func=None): @@ -355,7 +352,6 @@ def test_nankurt(self): def test_nanprod(self): self.check_funs(nanops.nanprod, np.prod, - allow_complex=False, allow_str=False, allow_date=False) def check_nancorr_nancov_2d(self, checkfun, targ0, targ1, **kwargs):