Skip to content

Commit 654c2f3

Browse files
committed
Included PR suggestions, added seperate dtype test (WIP)
1 parent 42a8b76 commit 654c2f3

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

pandas/tests/frame/test_arithmetic.py

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,23 +2176,54 @@ def test_mixed_col_index_dtype(string_dtype_no_object):
21762176

21772177

21782178
@pytest.mark.parametrize("op", ["add", "sub", "mul", "div", "mod", "truediv", "pow"])
2179-
def test_df_series_fill_value(op):
2179+
def test_df_fill_value_operations(op):
21802180
# GH 61581
2181-
data = np.arange(50).reshape(10, 5)
2181+
input_data = np.arange(50).reshape(10, 5)
2182+
fill_val = 5
21822183
columns = list("ABCDE")
2183-
df = DataFrame(data, columns=columns)
2184+
df = DataFrame(input_data, columns=columns)
21842185
for i in range(5):
21852186
df.iat[i, i] = np.nan
21862187
df.iat[i + 1, i] = np.nan
21872188
df.iat[i + 4, i] = np.nan
21882189

2189-
df_a = df.iloc[:, :-1]
2190-
df_b = df.iloc[:, -1]
2191-
nan_mask = df_a.isna().astype(int).mul(df_b.isna().astype(int), axis=0).astype(bool)
2190+
df_base = df.iloc[:, :-1]
2191+
df_mult = df.iloc[:, -1]
2192+
mask = df.isna().values
2193+
mask = mask[:, :-1] & mask[:, [-1]]
21922194

2193-
df_result = getattr(df_a, op)(df_b, axis=0, fill_value=5)
2194-
df_expected = getattr(df_a.fillna(5), op)(df_b.fillna(5), axis=0).mask(
2195-
nan_mask, np.nan
2196-
)
2195+
df_result = getattr(df_base, op)(df_mult, axis=0, fill_value=fill_val)
2196+
df_expected = getattr(df_base.fillna(fill_val), op)(
2197+
df_mult.fillna(fill_val), axis=0
2198+
).mask(mask, np.nan)
21972199

21982200
tm.assert_frame_equal(df_result, df_expected)
2201+
2202+
2203+
# ! Currently implementing
2204+
# @pytest.mark.parametrize("input_data, fill_val",
2205+
# [
2206+
# (np.arange(50).reshape(10, 5), 5), #Numpy
2207+
# (pd.array(np.random.choice([True, False], size=(10, 5)),
2208+
# dtype="boolean"), True),
2209+
# ]
2210+
# )
2211+
# def test_df_fill_value_dtype(input_data, fill_val):
2212+
# # GH 61581
2213+
# columns = list("ABCDE")
2214+
# df = DataFrame(input_data, columns=columns)
2215+
# for i in range(5):
2216+
# df.iat[i, i] = np.nan
2217+
# df.iat[i + 1, i] = np.nan
2218+
# df.iat[i + 4, i] = np.nan
2219+
2220+
# df_base = df.iloc[:, :-1]
2221+
# df_mult = df.iloc[:, -1]
2222+
# mask = df.isna().values
2223+
# mask = mask[:, :-1] & mask[:, [-1]]
2224+
2225+
# df_result = df_base.mul(df_mult, axis=0, fill_value=fill_val)
2226+
# df_expected = (df_base.fillna(fill_val).mul(df_mult.fillna(fill_val),
2227+
# axis=0)).mask(mask, np.nan)
2228+
2229+
# tm.assert_frame_equal(df_result, df_expected)

0 commit comments

Comments
 (0)