Skip to content

Commit 3e8ac12

Browse files
BUG (CoW): fix reference tracking in replace_list with None (#59807)
1 parent 235e1be commit 3e8ac12

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

pandas/core/internals/blocks.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ def _replace_coerce(
915915
nb = nb.copy()
916916
putmask_inplace(nb.values, mask, value)
917917
return [nb]
918-
return [self]
918+
return [self.copy(deep=False)]
919919
return self.replace(
920920
to_replace=to_replace,
921921
value=value,

pandas/tests/copy_view/test_replace.py

+6
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,12 @@ def test_replace_list_none():
286286

287287
assert not np.shares_memory(get_array(df, "a"), get_array(df2, "a"))
288288

289+
# replace multiple values that don't actually replace anything with None
290+
# https://github.com/pandas-dev/pandas/issues/59770
291+
df3 = df.replace(["d", "e", "f"], value=None)
292+
tm.assert_frame_equal(df3, df_orig)
293+
assert tm.shares_memory(get_array(df, "a"), get_array(df3, "a"))
294+
289295

290296
def test_replace_list_none_inplace_refs():
291297
df = DataFrame({"a": ["a", "b", "c"]})

0 commit comments

Comments
 (0)