Skip to content

Commit 14fc3de

Browse files
TST: add CoW test for setitem with Series being set (#51296)
1 parent d744bdb commit 14fc3de

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

pandas/tests/copy_view/test_methods.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,33 @@ def test_isetitem(using_copy_on_write):
13591359
assert not np.shares_memory(get_array(df, "c"), get_array(df2, "c"))
13601360

13611361

1362+
@pytest.mark.parametrize(
1363+
"dtype", ["int64", "float64"], ids=["single-block", "mixed-block"]
1364+
)
1365+
def test_isetitem_series(using_copy_on_write, dtype):
1366+
df = DataFrame({"a": [1, 2, 3], "b": np.array([4, 5, 6], dtype=dtype)})
1367+
ser = Series([7, 8, 9])
1368+
ser_orig = ser.copy()
1369+
df.isetitem(0, ser)
1370+
1371+
if using_copy_on_write:
1372+
# TODO(CoW) this can share memory
1373+
assert not np.shares_memory(get_array(df, "a"), get_array(ser))
1374+
1375+
# mutating dataframe doesn't update series
1376+
df.loc[0, "a"] = 0
1377+
tm.assert_series_equal(ser, ser_orig)
1378+
1379+
# mutating series doesn't update dataframe
1380+
df = DataFrame({"a": [1, 2, 3], "b": np.array([4, 5, 6], dtype=dtype)})
1381+
ser = Series([7, 8, 9])
1382+
df.isetitem(0, ser)
1383+
1384+
ser.loc[0] = 0
1385+
expected = DataFrame({"a": [7, 8, 9], "b": np.array([4, 5, 6], dtype=dtype)})
1386+
tm.assert_frame_equal(df, expected)
1387+
1388+
13621389
@pytest.mark.parametrize("key", ["a", ["a"]])
13631390
def test_get(using_copy_on_write, key):
13641391
df = DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})

0 commit comments

Comments
 (0)