@@ -1468,18 +1468,23 @@ def test_regex_replace_scalar(
14681468 tm .assert_frame_equal (result , expected )
14691469
14701470 @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 ):
14721473 # GH-48644
14731474 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 )
14761481 tm .assert_frame_equal (result_df1 , expected_df1 )
14771482
14781483 df2 = DataFrame ({"A" : ["0" ], "B" : ["1" ]})
14791484 if regex :
1480- expected_df2 = DataFrame ({"A" : [1 ], "B" : ["1" ]}, dtype = object )
1485+ expected_df2 = DataFrame ({"A" : [1 ], "B" : ["1" ]}, dtype = dtype )
14811486 else :
1482- expected_df2 = DataFrame ({"A" : Series ([1 ], dtype = object ), "B" : ["1" ]})
1487+ expected_df2 = DataFrame ({"A" : Series ([1 ], dtype = dtype ), "B" : ["1" ]})
14831488 result_df2 = df2 .replace (to_replace = "0" , value = 1 , regex = regex )
14841489 tm .assert_frame_equal (result_df2 , expected_df2 )
14851490
0 commit comments