From a45cb67ef293d23f25e41e9dc22e8bb8b6d89a5e Mon Sep 17 00:00:00 2001 From: Gabriel Di Pardi Arruda Date: Mon, 18 Oct 2021 23:19:24 -0300 Subject: [PATCH 1/4] testing broadcast on multiindex --- pandas/tests/frame/test_arithmetic.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pandas/tests/frame/test_arithmetic.py b/pandas/tests/frame/test_arithmetic.py index 1ddb18c218cc6..4525255147de6 100644 --- a/pandas/tests/frame/test_arithmetic.py +++ b/pandas/tests/frame/test_arithmetic.py @@ -1882,3 +1882,18 @@ def _constructor_sliced(self): result = sdf + sdf tm.assert_frame_equal(result, expected) + + +def test_broadcast_multiindex(): + # GH34388 + df1 = DataFrame({"A": [0, 1, 2], "B": [1, 2, 3]}) + df1.columns.set_names("L1", inplace=True) + + df2 = DataFrame({("A", "C"): [0, 0, 0], ("A", "D"): [0, 0, 0]}) + df2.columns.set_names(["L1", "L2"], inplace=True) + + result = df1.add(df2) + expected = DataFrame({("A", "C"): [0, 1, 2], ("A", "D"): [0, 1, 2]}) + expected.columns.set_names(["L1", "L2"], inplace=True) + + tm.assert_frame_equal(result, expected) From 84ffae76d608b34c1b5e101782b63121fb1a4da2 Mon Sep 17 00:00:00 2001 From: Gabriel Di Pardi Arruda Date: Tue, 16 Nov 2021 21:02:29 -0300 Subject: [PATCH 2/4] parameterized and removed inplace --- pandas/tests/frame/test_arithmetic.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pandas/tests/frame/test_arithmetic.py b/pandas/tests/frame/test_arithmetic.py index 4525255147de6..d1ebd87542f6f 100644 --- a/pandas/tests/frame/test_arithmetic.py +++ b/pandas/tests/frame/test_arithmetic.py @@ -1884,16 +1884,17 @@ def _constructor_sliced(self): tm.assert_frame_equal(result, expected) -def test_broadcast_multiindex(): +@pytest.mark.parametrize("level", [0, None]) +def test_broadcast_multiindex(level): # GH34388 df1 = DataFrame({"A": [0, 1, 2], "B": [1, 2, 3]}) - df1.columns.set_names("L1", inplace=True) + df1.columns = df1.columns.set_names("L1") df2 = DataFrame({("A", "C"): [0, 0, 0], ("A", "D"): [0, 0, 0]}) - df2.columns.set_names(["L1", "L2"], inplace=True) + df2.columns = df2.columns.set_names(["L1", "L2"]) - result = df1.add(df2) + result = df1.add(df2, level=level) expected = DataFrame({("A", "C"): [0, 1, 2], ("A", "D"): [0, 1, 2]}) - expected.columns.set_names(["L1", "L2"], inplace=True) + expected.columns = expected.columns.set_names(["L1", "L2"]) tm.assert_frame_equal(result, expected) From dd0cab389b46a7c198268bda75dad73e98d3ddec Mon Sep 17 00:00:00 2001 From: Gabriel Di Pardi Arruda Date: Thu, 18 Nov 2021 21:04:50 -0300 Subject: [PATCH 3/4] changed test location --- pandas/tests/frame/test_arithmetic.py | 31 +++++++++++++-------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/pandas/tests/frame/test_arithmetic.py b/pandas/tests/frame/test_arithmetic.py index d1ebd87542f6f..8c285a518abfa 100644 --- a/pandas/tests/frame/test_arithmetic.py +++ b/pandas/tests/frame/test_arithmetic.py @@ -668,6 +668,21 @@ def test_arithmetic_with_duplicate_columns(self, op): str(result) result.dtypes + @pytest.mark.parametrize("level", [0, None]) + def test_broadcast_multiindex(level): + # GH34388 + df1 = DataFrame({"A": [0, 1, 2], "B": [1, 2, 3]}) + df1.columns = df1.columns.set_names("L1") + + df2 = DataFrame({("A", "C"): [0, 0, 0], ("A", "D"): [0, 0, 0]}) + df2.columns = df2.columns.set_names(["L1", "L2"]) + + result = df1.add(df2, level=level) + expected = DataFrame({("A", "C"): [0, 1, 2], ("A", "D"): [0, 1, 2]}) + expected.columns = expected.columns.set_names(["L1", "L2"]) + + tm.assert_frame_equal(result, expected) + class TestFrameArithmetic: def test_td64_op_nat_casting(self): @@ -1882,19 +1897,3 @@ def _constructor_sliced(self): result = sdf + sdf tm.assert_frame_equal(result, expected) - - -@pytest.mark.parametrize("level", [0, None]) -def test_broadcast_multiindex(level): - # GH34388 - df1 = DataFrame({"A": [0, 1, 2], "B": [1, 2, 3]}) - df1.columns = df1.columns.set_names("L1") - - df2 = DataFrame({("A", "C"): [0, 0, 0], ("A", "D"): [0, 0, 0]}) - df2.columns = df2.columns.set_names(["L1", "L2"]) - - result = df1.add(df2, level=level) - expected = DataFrame({("A", "C"): [0, 1, 2], ("A", "D"): [0, 1, 2]}) - expected.columns = expected.columns.set_names(["L1", "L2"]) - - tm.assert_frame_equal(result, expected) From a13f846ca50c81c8f1609c69948aca0c592ef36e Mon Sep 17 00:00:00 2001 From: Gabriel Di Pardi Arruda Date: Thu, 18 Nov 2021 21:22:41 -0300 Subject: [PATCH 4/4] forgot self --- pandas/tests/frame/test_arithmetic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/test_arithmetic.py b/pandas/tests/frame/test_arithmetic.py index 37fa597f1f012..39a39c1764480 100644 --- a/pandas/tests/frame/test_arithmetic.py +++ b/pandas/tests/frame/test_arithmetic.py @@ -669,7 +669,7 @@ def test_arithmetic_with_duplicate_columns(self, op): result.dtypes @pytest.mark.parametrize("level", [0, None]) - def test_broadcast_multiindex(level): + def test_broadcast_multiindex(self, level): # GH34388 df1 = DataFrame({"A": [0, 1, 2], "B": [1, 2, 3]}) df1.columns = df1.columns.set_names("L1")