@@ -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" ]])
13631390def test_get (using_copy_on_write , key ):
13641391 df = DataFrame ({"a" : [1 , 2 , 3 ], "b" : [4 , 5 , 6 ]})
0 commit comments