diff --git a/doc/source/whatsnew/v1.6.0.rst b/doc/source/whatsnew/v1.6.0.rst index 9f793532e5e6b8..143711fcccd650 100644 --- a/doc/source/whatsnew/v1.6.0.rst +++ b/doc/source/whatsnew/v1.6.0.rst @@ -238,6 +238,7 @@ Plotting Groupby/resample/rolling ^^^^^^^^^^^^^^^^^^^^^^^^ +- Bug in :class:`.ExponentialMovingWindow` with ``online`` not raising a ``NotImplementedError`` for unsupported operations (:issue:`48834`) - Bug in :meth:`DataFrameGroupBy.sample` raises ``ValueError`` when the object is empty (:issue:`48459`) - diff --git a/pandas/core/window/ewm.py b/pandas/core/window/ewm.py index 6fae119bffdf17..297febe724019a 100644 --- a/pandas/core/window/ewm.py +++ b/pandas/core/window/ewm.py @@ -967,10 +967,10 @@ def reset(self) -> None: self._mean.reset() def aggregate(self, func, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("aggregate is not implemented.") def std(self, bias: bool = False, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("std is not implemented.") def corr( self, @@ -979,7 +979,7 @@ def corr( numeric_only: bool = False, **kwargs, ): - return NotImplementedError + raise NotImplementedError("corr is not implemented.") def cov( self, @@ -989,10 +989,10 @@ def cov( numeric_only: bool = False, **kwargs, ): - return NotImplementedError + raise NotImplementedError("cov is not implemented.") def var(self, bias: bool = False, *args, **kwargs): - return NotImplementedError + raise NotImplementedError("var is not implemented.") def mean(self, *args, update=None, update_times=None, **kwargs): """ diff --git a/pandas/tests/window/test_online.py b/pandas/tests/window/test_online.py index 88f462869d8b65..cce46526884a6a 100644 --- a/pandas/tests/window/test_online.py +++ b/pandas/tests/window/test_online.py @@ -103,3 +103,13 @@ def test_update_times_mean( tm.assert_equal(result, expected.tail(3)) online_ewm.reset() + + @pytest.mark.parametrize("method", ["aggregate", "std", "corr", "cov", "var"]) + def test_ewm_notimplementederror_raises(self, method): + ser = Series(range(10)) + kwargs = {} + if method == "aggregate": + kwargs["func"] = lambda x: x + + with pytest.raises(NotImplementedError, match=".* is not implemented."): + getattr(ser.ewm(1).online(), method)(**kwargs)