@@ -2207,30 +2207,36 @@ def test_df_fill_value_operations(op):
2207
2207
tm .assert_frame_equal (df_result , df_expected )
2208
2208
2209
2209
2210
- # ! Currently implementing
2211
- # @pytest.mark.parametrize("input_data, fill_val",
2212
- # [
2213
- # (np.arange(50).reshape(10, 5), 5), #Numpy
2214
- # (pd.array(np.random.choice([True, False], size=(10, 5)),
2215
- # dtype="boolean"), True),
2216
- # ]
2217
- # )
2218
- # def test_df_fill_value_dtype(input_data, fill_val):
2219
- # # GH 61581
2220
- # columns = list("ABCDE")
2221
- # df = DataFrame(input_data, columns=columns)
2222
- # for i in range(5):
2223
- # df.iat[i, i] = np.nan
2224
- # df.iat[i + 1, i] = np.nan
2225
- # df.iat[i + 4, i] = np.nan
2226
-
2227
- # df_base = df.iloc[:, :-1]
2228
- # df_mult = df.iloc[:, -1]
2229
- # mask = df.isna().values
2230
- # mask = mask[:, :-1] & mask[:, [-1]]
2231
-
2232
- # df_result = df_base.mul(df_mult, axis=0, fill_value=fill_val)
2233
- # df_expected = (df_base.fillna(fill_val).mul(df_mult.fillna(fill_val),
2234
- # axis=0)).mask(mask, np.nan)
2235
-
2236
- # tm.assert_frame_equal(df_result, df_expected)
2210
+ dt_params = [
2211
+ (tm .ALL_INT_NUMPY_DTYPES , 5 ),
2212
+ (tm .ALL_INT_EA_DTYPES , 5 ),
2213
+ (tm .FLOAT_NUMPY_DTYPES , 4.9 ),
2214
+ (tm .FLOAT_EA_DTYPES , 4.9 ),
2215
+ ]
2216
+
2217
+ dt_param_flat = [(dt , val ) for lst , val in dt_params for dt in lst ]
2218
+
2219
+
2220
+ @pytest .mark .parametrize ("data_type, fill_val" , dt_param_flat )
2221
+ def test_df_fill_value_dtype (data_type , fill_val ):
2222
+ # GH 61581
2223
+ base_data = np .arange (50 ).reshape (10 , 5 )
2224
+ df_data = pd .array (base_data , dtype = data_type )
2225
+ columns = list ("ABCDE" )
2226
+ df = DataFrame (df_data , columns = columns )
2227
+ for i in range (5 ):
2228
+ df .iat [i , i ] = np .nan
2229
+ df .iat [i + 1 , i ] = pd .NA
2230
+ df .iat [i + 4 , i ] = pd .NA
2231
+
2232
+ df_base = df .iloc [:, :- 1 ]
2233
+ df_mult = df .iloc [:, - 1 ]
2234
+ mask = df .isna ().values
2235
+ mask = mask [:, :- 1 ] & mask [:, [- 1 ]]
2236
+
2237
+ df_result = df_base .mul (df_mult , axis = 0 , fill_value = fill_val )
2238
+ df_expected = (df_base .fillna (fill_val ).mul (df_mult .fillna (fill_val ), axis = 0 )).mask (
2239
+ mask , np .nan
2240
+ )
2241
+
2242
+ tm .assert_frame_equal (df_result , df_expected )
0 commit comments