From 7fb2e121efc2c6978d75886f910e2eee0e74a71b Mon Sep 17 00:00:00 2001 From: Margret `Pax` Williams Date: Sat, 14 Nov 2020 18:28:01 +0000 Subject: [PATCH 1/4] TST: Add test for setting item using python list (#19406) --- pandas/tests/series/indexing/test_setitem.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pandas/tests/series/indexing/test_setitem.py b/pandas/tests/series/indexing/test_setitem.py index 4f00f9c931d6a..a412240e7ee45 100644 --- a/pandas/tests/series/indexing/test_setitem.py +++ b/pandas/tests/series/indexing/test_setitem.py @@ -126,6 +126,14 @@ def test_setitem_boolean_different_order(self, string_series): tm.assert_series_equal(copy, expected) + def test_setitem_boolean_using_python_list(self): + # GH#19406 + series = Series([None, "b", None]) + mask = series.isnull() + series[mask] = ["a", "c"] + expected = Series(["a", "b", "c"]) + tm.assert_series_equal(series, expected) + @pytest.mark.parametrize("value", [None, NaT, np.nan]) def test_setitem_boolean_td64_values_cast_na(self, value): # GH#18586 From c7de1459308f089d23809d2367c1cec62c350598 Mon Sep 17 00:00:00 2001 From: Margret `Pax` Williams Date: Sat, 14 Nov 2020 19:12:27 +0000 Subject: [PATCH 2/4] CLN: Change test and var name, hardcode values (#37840) --- pandas/tests/series/indexing/test_setitem.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pandas/tests/series/indexing/test_setitem.py b/pandas/tests/series/indexing/test_setitem.py index a412240e7ee45..759a99be47e7d 100644 --- a/pandas/tests/series/indexing/test_setitem.py +++ b/pandas/tests/series/indexing/test_setitem.py @@ -126,13 +126,13 @@ def test_setitem_boolean_different_order(self, string_series): tm.assert_series_equal(copy, expected) - def test_setitem_boolean_using_python_list(self): - # GH#19406 - series = Series([None, "b", None]) - mask = series.isnull() - series[mask] = ["a", "c"] + def test_setitem_boolean_python_list(self): + # GH19406 + ser = Series([None, "b", None]) + mask = [0, 2] + ser[mask] = ["a", "c"] expected = Series(["a", "b", "c"]) - tm.assert_series_equal(series, expected) + tm.assert_series_equal(ser, expected) @pytest.mark.parametrize("value", [None, NaT, np.nan]) def test_setitem_boolean_td64_values_cast_na(self, value): From 44196097249d62c655f9d7e84ce756e8f7761b39 Mon Sep 17 00:00:00 2001 From: Margret `Pax` Williams Date: Sat, 14 Nov 2020 20:00:53 +0000 Subject: [PATCH 3/4] TST: Use different types of mask (#37840) --- pandas/tests/series/indexing/test_setitem.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pandas/tests/series/indexing/test_setitem.py b/pandas/tests/series/indexing/test_setitem.py index 759a99be47e7d..df2fcd14131d3 100644 --- a/pandas/tests/series/indexing/test_setitem.py +++ b/pandas/tests/series/indexing/test_setitem.py @@ -126,10 +126,17 @@ def test_setitem_boolean_different_order(self, string_series): tm.assert_series_equal(copy, expected) - def test_setitem_boolean_python_list(self): + @pytest.mark.parametrize( + "mask", + [ + [True, False, True], + np.array([True, False, True]), + Series([True, False, True]), + ], + ) + def test_setitem_boolean_python_list(self, mask): # GH19406 ser = Series([None, "b", None]) - mask = [0, 2] ser[mask] = ["a", "c"] expected = Series(["a", "b", "c"]) tm.assert_series_equal(ser, expected) From 65cb6fc128d038ce442923d9473f9bbf2f41e337 Mon Sep 17 00:00:00 2001 From: Margret `Pax` Williams Date: Sat, 14 Nov 2020 20:26:30 +0000 Subject: [PATCH 4/4] CLN: Parametrize mask constructor instead of mask values (#37840) --- pandas/tests/series/indexing/test_setitem.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/pandas/tests/series/indexing/test_setitem.py b/pandas/tests/series/indexing/test_setitem.py index df2fcd14131d3..4ed7510a1d9e1 100644 --- a/pandas/tests/series/indexing/test_setitem.py +++ b/pandas/tests/series/indexing/test_setitem.py @@ -126,17 +126,11 @@ def test_setitem_boolean_different_order(self, string_series): tm.assert_series_equal(copy, expected) - @pytest.mark.parametrize( - "mask", - [ - [True, False, True], - np.array([True, False, True]), - Series([True, False, True]), - ], - ) - def test_setitem_boolean_python_list(self, mask): + @pytest.mark.parametrize("func", [list, np.array, Series]) + def test_setitem_boolean_python_list(self, func): # GH19406 ser = Series([None, "b", None]) + mask = func([True, False, True]) ser[mask] = ["a", "c"] expected = Series(["a", "b", "c"]) tm.assert_series_equal(ser, expected)