From 5c0a09558ca361d30563f63a5d204f0825ede699 Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Fri, 3 Jul 2020 13:47:17 +0200 Subject: [PATCH 1/6] TST add test case to drop_duplicates for inplace=True --- pandas/tests/frame/methods/test_drop_duplicates.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pandas/tests/frame/methods/test_drop_duplicates.py b/pandas/tests/frame/methods/test_drop_duplicates.py index 7c6391140e2bb..983696587c5e1 100644 --- a/pandas/tests/frame/methods/test_drop_duplicates.py +++ b/pandas/tests/frame/methods/test_drop_duplicates.py @@ -425,3 +425,8 @@ def test_drop_duplicates_null_in_object_column(nulls_fixture): df = DataFrame([[1, nulls_fixture], [2, "a"]], dtype=object) result = df.drop_duplicates() tm.assert_frame_equal(result, df) + +def test_drop_duplicates_inplace(): + df = DataFrame({"a": [1,2,3], "b": [1,2,4], "c": [1,6,5]}) + result = df.drop_duplicates(inplace=True) + assert result is None From 6b940bb782995e0306f339c2ae797f983e6a9822 Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Sat, 4 Jul 2020 14:22:54 +0200 Subject: [PATCH 2/6] CLN PEP-8 --- pandas/tests/frame/methods/test_drop_duplicates.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pandas/tests/frame/methods/test_drop_duplicates.py b/pandas/tests/frame/methods/test_drop_duplicates.py index 983696587c5e1..7104f932f8300 100644 --- a/pandas/tests/frame/methods/test_drop_duplicates.py +++ b/pandas/tests/frame/methods/test_drop_duplicates.py @@ -426,7 +426,8 @@ def test_drop_duplicates_null_in_object_column(nulls_fixture): result = df.drop_duplicates() tm.assert_frame_equal(result, df) -def test_drop_duplicates_inplace(): - df = DataFrame({"a": [1,2,3], "b": [1,2,4], "c": [1,6,5]}) + +def test_drop_duplicates_inplace_result(): + df = DataFrame({"a": [1, 2, 3], "b": [1, 2, 4], "c": [1, 6, 5]}) result = df.drop_duplicates(inplace=True) assert result is None From 4b8679c1b3fc9319f46bcbd6031e76b0d0b73d1e Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Tue, 7 Jul 2020 19:41:56 +0200 Subject: [PATCH 3/6] TST move to existing test --- .../frame/methods/test_drop_duplicates.py | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/pandas/tests/frame/methods/test_drop_duplicates.py b/pandas/tests/frame/methods/test_drop_duplicates.py index 7104f932f8300..64fb1ce7ab6b2 100644 --- a/pandas/tests/frame/methods/test_drop_duplicates.py +++ b/pandas/tests/frame/methods/test_drop_duplicates.py @@ -333,64 +333,73 @@ def test_drop_duplicates_inplace(): ) # single column df = orig.copy() - df.drop_duplicates("A", inplace=True) + return_value = df.drop_duplicates("A", inplace=True) expected = orig[:2] result = df tm.assert_frame_equal(result, expected) + assert(return_value is None) df = orig.copy() - df.drop_duplicates("A", keep="last", inplace=True) + return_value = df.drop_duplicates("A", keep="last", inplace=True) expected = orig.loc[[6, 7]] result = df tm.assert_frame_equal(result, expected) + assert (return_value is None) df = orig.copy() - df.drop_duplicates("A", keep=False, inplace=True) + return_value = df.drop_duplicates("A", keep=False, inplace=True) expected = orig.loc[[]] result = df tm.assert_frame_equal(result, expected) assert len(df) == 0 + assert (return_value is None) # multi column df = orig.copy() - df.drop_duplicates(["A", "B"], inplace=True) + return_value = df.drop_duplicates(["A", "B"], inplace=True) expected = orig.loc[[0, 1, 2, 3]] result = df tm.assert_frame_equal(result, expected) + assert (return_value is None) df = orig.copy() - df.drop_duplicates(["A", "B"], keep="last", inplace=True) + return_value = df.drop_duplicates(["A", "B"], keep="last", inplace=True) expected = orig.loc[[0, 5, 6, 7]] result = df tm.assert_frame_equal(result, expected) + assert (return_value is None) df = orig.copy() - df.drop_duplicates(["A", "B"], keep=False, inplace=True) + return_value = df.drop_duplicates(["A", "B"], keep=False, inplace=True) expected = orig.loc[[0]] result = df tm.assert_frame_equal(result, expected) + assert (return_value is None) # consider everything orig2 = orig.loc[:, ["A", "B", "C"]].copy() df2 = orig2.copy() - df2.drop_duplicates(inplace=True) + return_value = df2.drop_duplicates(inplace=True) # in this case only expected = orig2.drop_duplicates(["A", "B"]) result = df2 tm.assert_frame_equal(result, expected) + assert (return_value is None) df2 = orig2.copy() - df2.drop_duplicates(keep="last", inplace=True) + return_value = df2.drop_duplicates(keep="last", inplace=True) expected = orig2.drop_duplicates(["A", "B"], keep="last") result = df2 tm.assert_frame_equal(result, expected) + assert (return_value is None) df2 = orig2.copy() - df2.drop_duplicates(keep=False, inplace=True) + return_value = df2.drop_duplicates(keep=False, inplace=True) expected = orig2.drop_duplicates(["A", "B"], keep=False) result = df2 tm.assert_frame_equal(result, expected) + assert (return_value is None) @pytest.mark.parametrize("inplace", [True, False]) @@ -425,9 +434,3 @@ def test_drop_duplicates_null_in_object_column(nulls_fixture): df = DataFrame([[1, nulls_fixture], [2, "a"]], dtype=object) result = df.drop_duplicates() tm.assert_frame_equal(result, df) - - -def test_drop_duplicates_inplace_result(): - df = DataFrame({"a": [1, 2, 3], "b": [1, 2, 4], "c": [1, 6, 5]}) - result = df.drop_duplicates(inplace=True) - assert result is None From cb2ab5e3ab2f0b3b755a467b312b610659ec46c8 Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Tue, 7 Jul 2020 19:55:19 +0200 Subject: [PATCH 4/6] CLN remove parenthesis --- .../frame/methods/test_drop_duplicates.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pandas/tests/frame/methods/test_drop_duplicates.py b/pandas/tests/frame/methods/test_drop_duplicates.py index 64fb1ce7ab6b2..cebec215a0d9d 100644 --- a/pandas/tests/frame/methods/test_drop_duplicates.py +++ b/pandas/tests/frame/methods/test_drop_duplicates.py @@ -337,14 +337,14 @@ def test_drop_duplicates_inplace(): expected = orig[:2] result = df tm.assert_frame_equal(result, expected) - assert(return_value is None) + assert return_value is None df = orig.copy() return_value = df.drop_duplicates("A", keep="last", inplace=True) expected = orig.loc[[6, 7]] result = df tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None df = orig.copy() return_value = df.drop_duplicates("A", keep=False, inplace=True) @@ -352,7 +352,7 @@ def test_drop_duplicates_inplace(): result = df tm.assert_frame_equal(result, expected) assert len(df) == 0 - assert (return_value is None) + assert return_value is None # multi column df = orig.copy() @@ -360,21 +360,21 @@ def test_drop_duplicates_inplace(): expected = orig.loc[[0, 1, 2, 3]] result = df tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None df = orig.copy() return_value = df.drop_duplicates(["A", "B"], keep="last", inplace=True) expected = orig.loc[[0, 5, 6, 7]] result = df tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None df = orig.copy() return_value = df.drop_duplicates(["A", "B"], keep=False, inplace=True) expected = orig.loc[[0]] result = df tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None # consider everything orig2 = orig.loc[:, ["A", "B", "C"]].copy() @@ -385,21 +385,21 @@ def test_drop_duplicates_inplace(): expected = orig2.drop_duplicates(["A", "B"]) result = df2 tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None df2 = orig2.copy() return_value = df2.drop_duplicates(keep="last", inplace=True) expected = orig2.drop_duplicates(["A", "B"], keep="last") result = df2 tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None df2 = orig2.copy() return_value = df2.drop_duplicates(keep=False, inplace=True) expected = orig2.drop_duplicates(["A", "B"], keep=False) result = df2 tm.assert_frame_equal(result, expected) - assert (return_value is None) + assert return_value is None @pytest.mark.parametrize("inplace", [True, False]) From 1fc7243a4416e5dc9ffa8e5160bcfb8cdb1be186 Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Wed, 8 Jul 2020 17:28:52 +0200 Subject: [PATCH 5/6] TST verify dropna inplace (#35179) --- pandas/tests/frame/test_missing.py | 38 ++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/pandas/tests/frame/test_missing.py b/pandas/tests/frame/test_missing.py index 7cb7115276f71..e7563c140cb7a 100644 --- a/pandas/tests/frame/test_missing.py +++ b/pandas/tests/frame/test_missing.py @@ -24,14 +24,16 @@ def test_dropEmptyRows(self, float_frame): smaller_frame = frame.dropna(how="all") # check that original was preserved tm.assert_series_equal(frame["foo"], original) - inplace_frame1.dropna(how="all", inplace=True) + return_value = inplace_frame1.dropna(how="all", inplace=True) tm.assert_series_equal(smaller_frame["foo"], expected) tm.assert_series_equal(inplace_frame1["foo"], expected) + assert return_value is None smaller_frame = frame.dropna(how="all", subset=["foo"]) - inplace_frame2.dropna(how="all", subset=["foo"], inplace=True) + return_value = inplace_frame2.dropna(how="all", subset=["foo"], inplace=True) tm.assert_series_equal(smaller_frame["foo"], expected) tm.assert_series_equal(inplace_frame2["foo"], expected) + assert return_value is None def test_dropIncompleteRows(self, float_frame): N = len(float_frame.index) @@ -45,18 +47,20 @@ def test_dropIncompleteRows(self, float_frame): smaller_frame = frame.dropna() tm.assert_series_equal(frame["foo"], original) - inp_frame1.dropna(inplace=True) + return_value = inp_frame1.dropna(inplace=True) exp = Series(mat[5:], index=float_frame.index[5:], name="foo") tm.assert_series_equal(smaller_frame["foo"], exp) tm.assert_series_equal(inp_frame1["foo"], exp) + assert return_value is None samesize_frame = frame.dropna(subset=["bar"]) tm.assert_series_equal(frame["foo"], original) assert (frame["bar"] == 5).all() - inp_frame2.dropna(subset=["bar"], inplace=True) + return_value = inp_frame2.dropna(subset=["bar"], inplace=True) tm.assert_index_equal(samesize_frame.index, float_frame.index) tm.assert_index_equal(inp_frame2.index, float_frame.index) + assert return_value is None def test_dropna(self): df = DataFrame(np.random.randn(6, 4)) @@ -65,31 +69,35 @@ def test_dropna(self): dropped = df.dropna(axis=1) expected = df.loc[:, [0, 1, 3]] inp = df.copy() - inp.dropna(axis=1, inplace=True) + return_value = inp.dropna(axis=1, inplace=True) tm.assert_frame_equal(dropped, expected) tm.assert_frame_equal(inp, expected) + assert return_value is None dropped = df.dropna(axis=0) expected = df.loc[list(range(2, 6))] inp = df.copy() - inp.dropna(axis=0, inplace=True) + return_value = inp.dropna(axis=0, inplace=True) tm.assert_frame_equal(dropped, expected) tm.assert_frame_equal(inp, expected) + assert return_value is None # threshold dropped = df.dropna(axis=1, thresh=5) expected = df.loc[:, [0, 1, 3]] inp = df.copy() - inp.dropna(axis=1, thresh=5, inplace=True) + return_value = inp.dropna(axis=1, thresh=5, inplace=True) tm.assert_frame_equal(dropped, expected) tm.assert_frame_equal(inp, expected) + assert return_value is None dropped = df.dropna(axis=0, thresh=4) expected = df.loc[range(2, 6)] inp = df.copy() - inp.dropna(axis=0, thresh=4, inplace=True) + return_value = inp.dropna(axis=0, thresh=4, inplace=True) tm.assert_frame_equal(dropped, expected) tm.assert_frame_equal(inp, expected) + assert return_value is None dropped = df.dropna(axis=1, thresh=4) tm.assert_frame_equal(dropped, df) @@ -100,9 +108,10 @@ def test_dropna(self): # subset dropped = df.dropna(axis=0, subset=[0, 1, 3]) inp = df.copy() - inp.dropna(axis=0, subset=[0, 1, 3], inplace=True) + return_value = inp.dropna(axis=0, subset=[0, 1, 3], inplace=True) tm.assert_frame_equal(dropped, df) tm.assert_frame_equal(inp, df) + assert return_value is None # all dropped = df.dropna(axis=1, how="all") @@ -126,12 +135,14 @@ def test_drop_and_dropna_caching(self): df2 = df.copy() df["A"].dropna() tm.assert_series_equal(df["A"], original) - df["A"].dropna(inplace=True) + return_value = df["A"].dropna(inplace=True) tm.assert_series_equal(df["A"], expected) + assert return_value is None df2["A"].drop([1]) tm.assert_series_equal(df2["A"], original) - df2["A"].drop([1], inplace=True) + return_value = df2["A"].drop([1], inplace=True) tm.assert_series_equal(df2["A"], original.drop([1])) + assert return_value is None def test_dropna_corner(self, float_frame): # bad input @@ -202,7 +213,7 @@ def test_fillna_datetime(self, datetime_frame): padded = datetime_frame.fillna(method="pad") assert np.isnan(padded.loc[padded.index[:5], "A"]).all() assert ( - padded.loc[padded.index[-5:], "A"] == padded.loc[padded.index[-5], "A"] + padded.loc[padded.index[-5:], "A"] == padded.loc[padded.index[-5], "A"] ).all() msg = "Must specify a fill 'value' or 'method'" @@ -251,8 +262,9 @@ def test_fillna_different_dtype(self): ) tm.assert_frame_equal(result, expected) - df.fillna({2: "foo"}, inplace=True) + return_value = df.fillna({2: "foo"}, inplace=True) tm.assert_frame_equal(df, expected) + assert return_value is None def test_fillna_limit_and_value(self): # limit and value From 06febff6e268297cdc2c618b382914117d57b6d0 Mon Sep 17 00:00:00 2001 From: r-toroxel Date: Wed, 8 Jul 2020 17:36:05 +0200 Subject: [PATCH 6/6] CLN fix format --- pandas/tests/frame/test_missing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/test_missing.py b/pandas/tests/frame/test_missing.py index e7563c140cb7a..9bf5d24085697 100644 --- a/pandas/tests/frame/test_missing.py +++ b/pandas/tests/frame/test_missing.py @@ -213,7 +213,7 @@ def test_fillna_datetime(self, datetime_frame): padded = datetime_frame.fillna(method="pad") assert np.isnan(padded.loc[padded.index[:5], "A"]).all() assert ( - padded.loc[padded.index[-5:], "A"] == padded.loc[padded.index[-5], "A"] + padded.loc[padded.index[-5:], "A"] == padded.loc[padded.index[-5], "A"] ).all() msg = "Must specify a fill 'value' or 'method'"