@@ -1359,6 +1359,33 @@ def test_isetitem(using_copy_on_write):
1359
1359
assert not np .shares_memory (get_array (df , "c" ), get_array (df2 , "c" ))
1360
1360
1361
1361
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
+
1362
1389
@pytest .mark .parametrize ("key" , ["a" , ["a" ]])
1363
1390
def test_get (using_copy_on_write , key ):
1364
1391
df = DataFrame ({"a" : [1 , 2 , 3 ], "b" : [4 , 5 , 6 ]})
0 commit comments