Skip to content

Commit a0ed560

Browse files
committed
Parameterized test_setitem_boolean_mask
1 parent 5ad936e commit a0ed560

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

pandas/tests/frame/test_indexing.py

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,22 @@
3838
from pandas.tests.frame.common import TestData
3939

4040

41+
@pytest.fixture(scope='module',
42+
params=['dataframe', 'ndarray'])
43+
def f_get_mask(request):
44+
from functools import partial
45+
46+
def get_mask(df, mask_type):
47+
if mask_type == 'dataframe':
48+
return df > np.abs(df)
49+
elif mask_type == 'ndarray':
50+
return (df > np.abs(df)).values
51+
else:
52+
raise ValueError("Unknown `mask_type` '{}'".format(mask_type))
53+
54+
return partial(get_mask, mask_type=request.param)
55+
56+
4157
class TestDataFrameIndexing(TestData):
4258

4359
def test_getitem(self):
@@ -541,22 +557,21 @@ def test_setitem_boolean(self):
541557
np.putmask(expected.values, mask.values, df.values * 2)
542558
assert_frame_equal(df, expected)
543559

544-
def test_setitem_boolean_ndarary(self):
560+
def test_setitem_boolean_mask(self, f_get_mask):
545561
# Test for issue #18582
546-
547562
df = self.frame.copy()
548-
mask = df > np.abs(df)
549-
expected = df.copy()
550-
expected.values[mask.values] = nan
551-
552-
# index with 2-d boolean ndarray
553-
actual = df.copy()
554-
actual[mask.values] = nan
555-
assert_frame_equal(actual, expected)
556-
557-
# index with boolean DataFrame
563+
mask = f_get_mask(df)
564+
565+
# index with boolean mask
558566
actual = df.copy()
559567
actual[mask] = nan
568+
569+
# compare against ndarray boolean indexing
570+
if isinstance(mask, pd.DataFrame):
571+
mask = mask.values
572+
573+
expected = df.copy()
574+
expected.values[mask] = nan
560575
assert_frame_equal(actual, expected)
561576

562577
def test_setitem_cast(self):

0 commit comments

Comments
 (0)