From e6b52d79e8088c217dae3ca04b45850a527d1f3a Mon Sep 17 00:00:00 2001 From: gabriellm1 Date: Fri, 16 Oct 2020 21:28:08 -0300 Subject: [PATCH 1/3] added tests --- pandas/tests/series/indexing/test_where.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandas/tests/series/indexing/test_where.py b/pandas/tests/series/indexing/test_where.py index c4a2cb90f7090..04428bf972bc1 100644 --- a/pandas/tests/series/indexing/test_where.py +++ b/pandas/tests/series/indexing/test_where.py @@ -452,3 +452,17 @@ def test_where_empty_series_and_empty_cond_having_non_bool_dtypes(): ser = Series([], dtype=float) result = ser.where([]) tm.assert_series_equal(result, ser) + + +def test_where_category_not_dropping(): + + s = pd.Series(["A","A","B","B","C"],dtype='category') + exp = s.dtype + s.where(s!="C", s) + res = s.dtype + assert(exp==res) + +def test_where_categorical_frame_ValueError(): + s = pd.Series(["A","A","B","B","C"],dtype='category') + df = s.to_frame() + df.where(df != "C") \ No newline at end of file From b5708acdc133f511617f30d4c6ed897989a35cdc Mon Sep 17 00:00:00 2001 From: gabriellm1 Date: Fri, 16 Oct 2020 21:59:50 -0300 Subject: [PATCH 2/3] fix black pandas --- pandas/tests/series/indexing/test_where.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pandas/tests/series/indexing/test_where.py b/pandas/tests/series/indexing/test_where.py index 04428bf972bc1..c4edcbdc1f0cf 100644 --- a/pandas/tests/series/indexing/test_where.py +++ b/pandas/tests/series/indexing/test_where.py @@ -456,13 +456,14 @@ def test_where_empty_series_and_empty_cond_having_non_bool_dtypes(): def test_where_category_not_dropping(): - s = pd.Series(["A","A","B","B","C"],dtype='category') + s = pd.Series(["A", "A", "B", "B", "C"], dtype="category") exp = s.dtype - s.where(s!="C", s) + s.where(s != "C", s) res = s.dtype - assert(exp==res) + assert exp == res + def test_where_categorical_frame_ValueError(): - s = pd.Series(["A","A","B","B","C"],dtype='category') + s = pd.Series(["A", "A", "B", "B", "C"], dtype="category") df = s.to_frame() - df.where(df != "C") \ No newline at end of file + df.where(df != "C") From 0d5495f9227644f0e79c43b89bee99369ec56074 Mon Sep 17 00:00:00 2001 From: gabriellm1 Date: Sun, 18 Oct 2020 16:06:21 -0300 Subject: [PATCH 3/3] joined both tests --- pandas/tests/series/indexing/test_where.py | 23 ++++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/pandas/tests/series/indexing/test_where.py b/pandas/tests/series/indexing/test_where.py index c4edcbdc1f0cf..cbb34d595eb9b 100644 --- a/pandas/tests/series/indexing/test_where.py +++ b/pandas/tests/series/indexing/test_where.py @@ -454,16 +454,13 @@ def test_where_empty_series_and_empty_cond_having_non_bool_dtypes(): tm.assert_series_equal(result, ser) -def test_where_category_not_dropping(): - - s = pd.Series(["A", "A", "B", "B", "C"], dtype="category") - exp = s.dtype - s.where(s != "C", s) - res = s.dtype - assert exp == res - - -def test_where_categorical_frame_ValueError(): - s = pd.Series(["A", "A", "B", "B", "C"], dtype="category") - df = s.to_frame() - df.where(df != "C") +@pytest.mark.parametrize("klass", [Series, pd.DataFrame]) +def test_where_categorical(klass): + # https://github.com/pandas-dev/pandas/issues/18888 + exp = klass( + pd.Categorical(["A", "A", "B", "B", np.nan], categories=["A", "B", "C"]), + dtype="category", + ) + df = klass(["A", "A", "B", "B", "C"], dtype="category") + res = df.where(df != "C") + tm.assert_equal(exp, res)