@@ -1468,18 +1468,23 @@ def test_regex_replace_scalar(
1468
1468
tm .assert_frame_equal (result , expected )
1469
1469
1470
1470
@pytest .mark .parametrize ("regex" , [False , True ])
1471
- def test_replace_regex_dtype_frame (self , regex ):
1471
+ @pytest .mark .parametrize ("value" , [1 , "1" ])
1472
+ def test_replace_regex_dtype_frame (self , regex , value ):
1472
1473
# GH-48644
1473
1474
df1 = DataFrame ({"A" : ["0" ], "B" : ["0" ]})
1474
- expected_df1 = DataFrame ({"A" : [1 ], "B" : [1 ]}, dtype = object )
1475
- result_df1 = df1 .replace (to_replace = "0" , value = 1 , regex = regex )
1475
+ # When value is an integer, coerce result to object.
1476
+ # When value is a string, infer the correct string dtype.
1477
+ dtype = object if value == 1 else None
1478
+
1479
+ expected_df1 = DataFrame ({"A" : [value ], "B" : [value ]}, dtype = dtype )
1480
+ result_df1 = df1 .replace (to_replace = "0" , value = value , regex = regex )
1476
1481
tm .assert_frame_equal (result_df1 , expected_df1 )
1477
1482
1478
1483
df2 = DataFrame ({"A" : ["0" ], "B" : ["1" ]})
1479
1484
if regex :
1480
- expected_df2 = DataFrame ({"A" : [1 ], "B" : ["1" ]}, dtype = object )
1485
+ expected_df2 = DataFrame ({"A" : [1 ], "B" : ["1" ]}, dtype = dtype )
1481
1486
else :
1482
- expected_df2 = DataFrame ({"A" : Series ([1 ], dtype = object ), "B" : ["1" ]})
1487
+ expected_df2 = DataFrame ({"A" : Series ([1 ], dtype = dtype ), "B" : ["1" ]})
1483
1488
result_df2 = df2 .replace (to_replace = "0" , value = 1 , regex = regex )
1484
1489
tm .assert_frame_equal (result_df2 , expected_df2 )
1485
1490
0 commit comments