From 69ae73a2b629cc3890ccd79de945315866bc4e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Osorio=20L=C3=B3pez?= Date: Sat, 29 Jan 2022 12:09:17 -0500 Subject: [PATCH 1/3] TST: Nan must not be converted to string Closes #28403 --- pandas/tests/indexing/test_loc.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index 46c0271ebf974..d1b554fbbbbce 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -43,6 +43,15 @@ from pandas.tests.indexing.common import Base +def test_not_change_nan_loc(): + # GH 28403 + df = DataFrame({"A": [np.nan, "b"]}) + df["A"].loc[[0, 1]] = ["a", np.nan] + expected = DataFrame({"A": [False, True]}) + tm.assert_frame_equal(df.isna(), expected) + tm.assert_frame_equal(df.notna(), ~expected) + + class TestLoc(Base): def test_loc_getitem_int(self): From 3a8120d0fdae88beddd8696353b3db50d315cc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Osorio=20L=C3=B3pez?= Date: Mon, 31 Jan 2022 09:42:02 -0500 Subject: [PATCH 2/3] TST: Add test specific to the issue #28403 --- pandas/tests/indexing/test_loc.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index 9e8c6a419709b..b23184b56d81f 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -43,6 +43,15 @@ from pandas.tests.indexing.common import Base +def test_not_change_nan_loc2(): + # GH 28403 + df = DataFrame({"A": [np.nan, np.nan, "b"]}) + df["A"].loc[[0, 1, 2]] = ["a", np.nan, np.nan] + expected = DataFrame({"A": [False, True, True]}) + tm.assert_frame_equal(df.isna(), expected) + tm.assert_frame_equal(df.notna(), ~expected) + + def test_not_change_nan_loc(): # GH 28403 df = DataFrame({"A": [np.nan, "b"]}) From fe9b64525124d42e30b4b544439c5dcbee11d25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Osorio=20L=C3=B3pez?= Date: Wed, 2 Feb 2022 18:22:52 -0500 Subject: [PATCH 3/3] TST: Parametrize multiple inputs change nan loc --- pandas/tests/indexing/test_loc.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index b23184b56d81f..1e0be0e844e5f 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -43,20 +43,18 @@ from pandas.tests.indexing.common import Base -def test_not_change_nan_loc2(): - # GH 28403 - df = DataFrame({"A": [np.nan, np.nan, "b"]}) - df["A"].loc[[0, 1, 2]] = ["a", np.nan, np.nan] - expected = DataFrame({"A": [False, True, True]}) - tm.assert_frame_equal(df.isna(), expected) - tm.assert_frame_equal(df.notna(), ~expected) - - -def test_not_change_nan_loc(): +@pytest.mark.parametrize( + "series, new_serie, expected_ser", + [ + [[np.nan, np.nan, "b"], ["a", np.nan, np.nan], [False, True, True]], + [[np.nan, "b"], ["a", np.nan], [False, True]], + ], +) +def test_not_change_nan_loc(series, new_serie, expected_ser): # GH 28403 - df = DataFrame({"A": [np.nan, "b"]}) - df["A"].loc[[0, 1]] = ["a", np.nan] - expected = DataFrame({"A": [False, True]}) + df = DataFrame({"A": series}) + df["A"].loc[:] = new_serie + expected = DataFrame({"A": expected_ser}) tm.assert_frame_equal(df.isna(), expected) tm.assert_frame_equal(df.notna(), ~expected)