From 732fbbac48f24f064fb2bc3c1135ed973cfd50cd Mon Sep 17 00:00:00 2001 From: Tobias Pitters Date: Fri, 8 May 2020 17:06:18 +0200 Subject: [PATCH 1/2] add test for setitem from duplicate axis --- pandas/tests/frame/indexing/test_setitem.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pandas/tests/frame/indexing/test_setitem.py b/pandas/tests/frame/indexing/test_setitem.py index d53665539309c..c98111aae772e 100644 --- a/pandas/tests/frame/indexing/test_setitem.py +++ b/pandas/tests/frame/indexing/test_setitem.py @@ -126,3 +126,16 @@ def test_setitem_with_unaligned_sparse_value(self): df["new_column"] = sp_series expected = Series(SparseArray([1, 0, 0]), name="new_column") tm.assert_series_equal(df["new_column"], expected) + + def test_setitem_from_duplicate_axis(self): + # GH#34034 + df = DataFrame( + [[20, "a"], [200, "a"], [200, "a"]], + columns=["col1", "col2"], + index=[10, 1, 1], + ) + df.loc[1, "col1"] = np.arange(2) + expected = DataFrame( + [[20, "a"], [0, "a"], [1, "a"]], columns=["col1", "col2"], index=[10, 1, 1] + ) + tm.assert_frame_equal(df, expected) From 19e9b0895e135e8edc38da0bd50609857d26e89e Mon Sep 17 00:00:00 2001 From: Tobias Pitters Date: Fri, 8 May 2020 18:31:15 +0200 Subject: [PATCH 2/2] move test to tests/indexing/test_loc.py --- pandas/tests/frame/indexing/test_setitem.py | 13 ------------- pandas/tests/indexing/test_loc.py | 13 +++++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pandas/tests/frame/indexing/test_setitem.py b/pandas/tests/frame/indexing/test_setitem.py index c98111aae772e..d53665539309c 100644 --- a/pandas/tests/frame/indexing/test_setitem.py +++ b/pandas/tests/frame/indexing/test_setitem.py @@ -126,16 +126,3 @@ def test_setitem_with_unaligned_sparse_value(self): df["new_column"] = sp_series expected = Series(SparseArray([1, 0, 0]), name="new_column") tm.assert_series_equal(df["new_column"], expected) - - def test_setitem_from_duplicate_axis(self): - # GH#34034 - df = DataFrame( - [[20, "a"], [200, "a"], [200, "a"]], - columns=["col1", "col2"], - index=[10, 1, 1], - ) - df.loc[1, "col1"] = np.arange(2) - expected = DataFrame( - [[20, "a"], [0, "a"], [1, "a"]], columns=["col1", "col2"], index=[10, 1, 1] - ) - tm.assert_frame_equal(df, expected) diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index d1f67981b1ec5..30416985f2020 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -107,6 +107,19 @@ def test_loc_getitem_label_slice(self): "loc", slice(2, 4, 2), typs=["mixed"], axes=0, fails=TypeError, ) + def test_setitem_from_duplicate_axis(self): + # GH#34034 + df = DataFrame( + [[20, "a"], [200, "a"], [200, "a"]], + columns=["col1", "col2"], + index=[10, 1, 1], + ) + df.loc[1, "col1"] = np.arange(2) + expected = DataFrame( + [[20, "a"], [0, "a"], [1, "a"]], columns=["col1", "col2"], index=[10, 1, 1] + ) + tm.assert_frame_equal(df, expected) + class TestLoc2: # TODO: better name, just separating out things that rely on base class