From b3145c6669a2ca8cb617b78db63eac3a99102c41 Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Wed, 22 Feb 2023 23:03:41 +0000 Subject: [PATCH] ENH: Series.fillna with empty argument making deep copy --- pandas/core/generic.py | 2 +- pandas/tests/copy_view/test_interp_fillna.py | 24 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 8e7d31f3f85e1..84f11ce9daa7a 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -6859,7 +6859,7 @@ def fillna( # test_fillna_nonscalar if inplace: return None - return self.copy() + return self.copy(deep=None) from pandas import Series value = Series(value) diff --git a/pandas/tests/copy_view/test_interp_fillna.py b/pandas/tests/copy_view/test_interp_fillna.py index 32a36b9690465..930f6a42f1057 100644 --- a/pandas/tests/copy_view/test_interp_fillna.py +++ b/pandas/tests/copy_view/test_interp_fillna.py @@ -232,3 +232,27 @@ def test_fillna_interval_inplace_reference(using_copy_on_write): assert np.shares_memory( get_array(ser, "a").left.values, get_array(view, "a").left.values ) + + +def test_fillna_series_empty_arg(using_copy_on_write): + ser = Series([1, np.nan, 2]) + ser_orig = ser.copy() + result = ser.fillna({}) + + if using_copy_on_write: + assert np.shares_memory(get_array(ser), get_array(result)) + else: + assert not np.shares_memory(get_array(ser), get_array(result)) + + ser.iloc[0] = 100.5 + tm.assert_series_equal(ser_orig, result) + + +def test_fillna_series_empty_arg_inplace(using_copy_on_write): + ser = Series([1, np.nan, 2]) + arr = get_array(ser) + ser.fillna({}, inplace=True) + + assert np.shares_memory(get_array(ser), arr) + if using_copy_on_write: + assert ser._mgr._has_no_reference(0)