From b527faaea62ed334e439aeb1b8519a93812acfd6 Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 01:53:22 +0000 Subject: [PATCH 1/6] Add testing to df.where() typecasting as per GH 42295 --- pandas/tests/frame/indexing/test_where.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index e23a893e0538d..fb772df509984 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -771,3 +771,12 @@ def test_where_non_keyword_deprecation(): result = s.where(s > 1, 10, False) expected = DataFrame([10, 10, 2, 3, 4]) tm.assert_frame_equal(expected, result) + +def test_where_columns_casting(): + # GH 42295 + + d1 = DataFrame({"a": [1.0, 2.0], 'b': [3, np.nan]}) + result = d1.where(pd.notnull(d1), None).dtypes + # make sure dtypes don't change + expected = d1.dtypes + tm.assert_series_equal(expected, result) \ No newline at end of file From 71c8033d168696a4ceb73c74ca1758be471742ad Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 02:02:23 +0000 Subject: [PATCH 2/6] Fix style --- pandas/tests/frame/indexing/test_where.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index fb772df509984..079b84c58ad59 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -772,6 +772,7 @@ def test_where_non_keyword_deprecation(): expected = DataFrame([10, 10, 2, 3, 4]) tm.assert_frame_equal(expected, result) + def test_where_columns_casting(): # GH 42295 @@ -779,4 +780,4 @@ def test_where_columns_casting(): result = d1.where(pd.notnull(d1), None).dtypes # make sure dtypes don't change expected = d1.dtypes - tm.assert_series_equal(expected, result) \ No newline at end of file + tm.assert_series_equal(expected, result) From 25359fcb4f20b4a81d1f412579e350c3ba8488d0 Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 03:47:40 +0000 Subject: [PATCH 3/6] Directly compare data frames --- pandas/tests/frame/indexing/test_where.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 079b84c58ad59..f740e4ec9ec1b 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -777,7 +777,7 @@ def test_where_columns_casting(): # GH 42295 d1 = DataFrame({"a": [1.0, 2.0], 'b': [3, np.nan]}) - result = d1.where(pd.notnull(d1), None).dtypes + result = d1.where(pd.notnull(d1), None) # make sure dtypes don't change - expected = d1.dtypes - tm.assert_series_equal(expected, result) + expected = d1 + tm.assert_frame_equal(expected, result) From 2db7a1d214f90ffacc43ee96ec56042b97510ddb Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 04:22:22 +0000 Subject: [PATCH 4/6] Fix pre-commit --- pandas/tests/frame/indexing/test_where.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index f740e4ec9ec1b..f241174eaeeca 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -776,7 +776,7 @@ def test_where_non_keyword_deprecation(): def test_where_columns_casting(): # GH 42295 - d1 = DataFrame({"a": [1.0, 2.0], 'b': [3, np.nan]}) + d1 = DataFrame({"a": [1.0, 2.0], "b": [3, np.nan]}) result = d1.where(pd.notnull(d1), None) # make sure dtypes don't change expected = d1 From fc914c9baeeeaf8b8992377231310402189a0374 Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 17:49:15 +0000 Subject: [PATCH 5/6] Rename dataframe to df --- pandas/tests/frame/indexing/test_where.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index f241174eaeeca..29467ed40f8cf 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -776,8 +776,8 @@ def test_where_non_keyword_deprecation(): def test_where_columns_casting(): # GH 42295 - d1 = DataFrame({"a": [1.0, 2.0], "b": [3, np.nan]}) - result = d1.where(pd.notnull(d1), None) + df = DataFrame({"a": [1.0, 2.0], "b": [3, np.nan]}) + result = df.where(pd.notnull(df), None) # make sure dtypes don't change - expected = d1 + expected = df.copy() tm.assert_frame_equal(expected, result) From 06753595b07db800c4287e7c1a0aaacf27a8522d Mon Sep 17 00:00:00 2001 From: Maximilian Carr Date: Mon, 23 Aug 2021 20:00:23 +0000 Subject: [PATCH 6/6] create expected before calling where --- pandas/tests/frame/indexing/test_where.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 29467ed40f8cf..eaafd2f017e79 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -777,7 +777,7 @@ def test_where_columns_casting(): # GH 42295 df = DataFrame({"a": [1.0, 2.0], "b": [3, np.nan]}) + expected = df.copy() result = df.where(pd.notnull(df), None) # make sure dtypes don't change - expected = df.copy() tm.assert_frame_equal(expected, result)