diff --git a/modin/pandas/series.py b/modin/pandas/series.py index f80a9c77523..74b83a58ac1 100644 --- a/modin/pandas/series.py +++ b/modin/pandas/series.py @@ -11,7 +11,7 @@ from .base import BasePandasDataset from .iterator import PartitionIterator from .utils import _inherit_docstrings -from .utils import from_pandas +from .utils import from_pandas, to_pandas @_inherit_docstrings(pandas.Series, excluded=[pandas.Series, pandas.Series.__init__]) @@ -1059,7 +1059,10 @@ def where( try_cast=False, raise_on_error=None, ): + if isinstance(other, Series): + other = to_pandas(other) return self._default_to_pandas( + pandas.Series.where, cond, other=other, inplace=inplace, @@ -1070,7 +1073,7 @@ def where( raise_on_error=raise_on_error, ) - def xs(self, key, axis=0, level=None, drop_level=True): + def xs(self, key, axis=0, level=None, drop_level=True): # pragma: no cover raise NotImplementedError("Not Yet implemented.") @property diff --git a/modin/pandas/test/test_series.py b/modin/pandas/test/test_series.py index 98740161859..51ea824683d 100644 --- a/modin/pandas/test/test_series.py +++ b/modin/pandas/test/test_series.py @@ -2443,7 +2443,7 @@ def test_to_period(): with pytest.warns(UserWarning): series.to_period() - + @pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) def test_to_sparse(data): @@ -2565,57 +2565,84 @@ def test_update(): modin_series.update(None) -@pytest.mark.skip(reason="Using pandas Series.") -def test_valid(): - modin_series = create_test_series() +@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) +def test_valid(data): + modin_series, pandas_series = create_test_series(data) - with pytest.raises(NotImplementedError): - modin_series.valid(None) + with pytest.warns(UserWarning): + modin_series.valid() -@pytest.mark.skip(reason="Using pandas Series.") -def test_value_counts(): - modin_series = create_test_series() +@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) +def test_value_counts(data): + modin_series, pandas_series = create_test_series(data) - with pytest.raises(NotImplementedError): - modin_series.value_counts(None, None, None, None) + with pytest.warns(UserWarning): + modin_series.value_counts() -@pytest.mark.skip(reason="Using pandas Series.") -def test_values(): - modin_series = create_test_series() +@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) +def test_values(data): + modin_series, pandas_series = create_test_series(data) - with pytest.raises(NotImplementedError): - modin_series.values + np.testing.assert_equal(modin_series.values, pandas_series.values) -@pytest.mark.skip(reason="Using pandas Series.") -def test_var(): - modin_series = create_test_series() +@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) +@pytest.mark.parametrize( + "skipna", bool_arg_values, ids=arg_keys("skipna", bool_arg_keys) +) +@pytest.mark.parametrize("ddof", int_arg_values, ids=arg_keys("ddof", int_arg_keys)) +def test_var(data, skipna, ddof): + modin_series, pandas_series = create_test_series(data) - with pytest.raises(NotImplementedError): - modin_series.var(None, None, None, None, None) + try: + pandas_result = pandas_series.var( + skipna=skipna, ddof=ddof + ) + except Exception: + with pytest.raises(TypeError): + modin_series.var( + skipna=skipna, ddof=ddof + ) + else: + modin_result = modin_series.var( + skipna=skipna, ddof=ddof + ) + df_equals(modin_result, pandas_result) -@pytest.mark.skip(reason="Using pandas Series.") -def test_view(): - modin_series = create_test_series() +@pytest.mark.parametrize("data", test_data_values, ids=test_data_keys) +def test_view(data): + modin_series, pandas_series = create_test_series(data) - with pytest.raises(NotImplementedError): + with pytest.warns(UserWarning): modin_series.view(None) -@pytest.mark.skip(reason="Using pandas Series.") def test_where(): - modin_series = create_test_series() + frame_data = random_state.randn(100) + pandas_series = pandas.Series(frame_data) + modin_series = pd.Series(frame_data) + pandas_cond_series = pandas_series % 5 < 2 + modin_cond_series = modin_series % 5 < 2 - with pytest.raises(NotImplementedError): - modin_series.where(None, None, None, None, None, None) + pandas_result = pandas_series.where(pandas_cond_series, -pandas_series) + modin_result = modin_series.where(modin_cond_series, -modin_series) + assert all((to_pandas(modin_result) == pandas_result)) + other = pandas.Series(random_state.randn(100)) + pandas_result = pandas_series.where(pandas_cond_series, other, axis=0) + modin_result = modin_series.where(modin_cond_series, other, axis=0) + assert all(to_pandas(modin_result) == pandas_result) -@pytest.mark.skip(reason="Using pandas Series.") -def test_xs(): - modin_series = create_test_series() + pandas_result = pandas_series.where(pandas_series < 2, True) + modin_result = modin_series.where(modin_series < 2, True) + assert all(to_pandas(modin_result) == pandas_result) - with pytest.raises(NotImplementedError): - modin_series.xs(None, None, None) + +@pytest.mark.skip("Deprecated in pandas.") +def test_xs(): + series = pd.Series([4, 0, "mammal", "cat", "walks"]) + with pytest.warns(UserWarning): + series.xs("mammal")