diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 21b3a0c033702..9702a5b374356 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -3718,6 +3718,10 @@ def _getitem_bool_array(self, key): # check_bool_indexer will throw exception if Series key cannot # be reindexed to match DataFrame rows key = check_bool_indexer(self.index, key) + + if key.all(): + return self.copy(deep=None) + indexer = key.nonzero()[0] return self._take_with_is_copy(indexer, axis=0) @@ -6418,7 +6422,7 @@ def drop_duplicates( 4 Indomie pack 5.0 """ if self.empty: - return self.copy() + return self.copy(deep=None) inplace = validate_bool_kwarg(inplace, "inplace") ignore_index = validate_bool_kwarg(ignore_index, "ignore_index") diff --git a/pandas/tests/copy_view/test_methods.py b/pandas/tests/copy_view/test_methods.py index f5c7b31e59bc5..b3be215bcf000 100644 --- a/pandas/tests/copy_view/test_methods.py +++ b/pandas/tests/copy_view/test_methods.py @@ -322,10 +322,11 @@ def test_head_tail(method, using_copy_on_write): tm.assert_frame_equal(df, df_orig) -def test_assign(using_copy_on_write): +@pytest.mark.parametrize("method", ["assign", "drop_duplicates"]) +def test_assign_drop_duplicates(using_copy_on_write, method): df = DataFrame({"a": [1, 2, 3]}) df_orig = df.copy() - df2 = df.assign() + df2 = getattr(df, method)() df2._mgr._verify_integrity() if using_copy_on_write: