Skip to content

Commit ff7e2fa

Browse files
CLN: Remove redundant index test from tests/base/test_ops.py (#32484)
1 parent d691633 commit ff7e2fa

File tree

2 files changed

+30
-45
lines changed

2 files changed

+30
-45
lines changed

pandas/tests/base/test_ops.py

-17
Original file line numberDiff line numberDiff line change
@@ -834,23 +834,6 @@ def test_access_by_position(self, indices):
834834
with pytest.raises(IndexError, match=msg):
835835
series.iloc[size]
836836

837-
@pytest.mark.parametrize("indexer_klass", [list, pd.Index])
838-
@pytest.mark.parametrize(
839-
"indexer",
840-
[
841-
[True] * 10,
842-
[False] * 10,
843-
[True, False, True, True, False, False, True, True, False, True],
844-
],
845-
)
846-
def test_bool_indexing(self, indexer_klass, indexer):
847-
# GH 22533
848-
for idx in self.indexes:
849-
exp_idx = [i for i in range(len(indexer)) if indexer[i]]
850-
tm.assert_index_equal(idx[indexer_klass(indexer)], idx[exp_idx])
851-
s = pd.Series(idx)
852-
tm.assert_series_equal(s[indexer_klass(indexer)], s.iloc[exp_idx])
853-
854837
def test_get_indexer_non_unique_dtype_mismatch(self):
855838
# GH 25459
856839
indexes, missing = pd.Index(["A", "B"]).get_indexer_non_unique(pd.Index([0]))

pandas/tests/indexing/test_na_indexing.py

+30-28
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
@pytest.mark.parametrize(
88
"values, dtype",
99
[
10+
([], "object"),
1011
([1, 2, 3], "int64"),
1112
([1.0, 2.0, 3.0], "float64"),
1213
(["a", "b", "c"], "object"),
@@ -22,42 +23,43 @@
2223
@pytest.mark.parametrize(
2324
"mask", [[True, False, False], [True, True, True], [False, False, False]]
2425
)
25-
@pytest.mark.parametrize("box_mask", [True, False])
26+
@pytest.mark.parametrize("indexer_class", [list, pd.array, pd.Index, pd.Series])
2627
@pytest.mark.parametrize("frame", [True, False])
27-
def test_series_mask_boolean(values, dtype, mask, box_mask, frame):
28-
ser = pd.Series(values, dtype=dtype, index=["a", "b", "c"])
29-
if frame:
30-
ser = ser.to_frame()
31-
mask = pd.array(mask, dtype="boolean")
32-
if box_mask:
33-
mask = pd.Series(mask, index=ser.index)
34-
35-
expected = ser[mask.astype("bool")]
28+
def test_series_mask_boolean(values, dtype, mask, indexer_class, frame):
29+
# In case len(values) < 3
30+
index = ["a", "b", "c"][: len(values)]
31+
mask = mask[: len(values)]
3632

37-
result = ser[mask]
38-
tm.assert_equal(result, expected)
39-
40-
if not box_mask:
41-
# Series.iloc[Series[bool]] isn't allowed
42-
result = ser.iloc[mask]
43-
tm.assert_equal(result, expected)
33+
obj = pd.Series(values, dtype=dtype, index=index)
34+
if frame:
35+
if len(values) == 0:
36+
# Otherwise obj is an empty DataFrame with shape (0, 1)
37+
obj = pd.DataFrame(dtype=dtype)
38+
else:
39+
obj = obj.to_frame()
40+
41+
if indexer_class is pd.array:
42+
mask = pd.array(mask, dtype="boolean")
43+
elif indexer_class is pd.Series:
44+
mask = pd.Series(mask, index=obj.index, dtype="boolean")
45+
else:
46+
mask = indexer_class(mask)
4447

45-
result = ser.loc[mask]
46-
tm.assert_equal(result, expected)
48+
expected = obj[mask]
4749

48-
# empty
49-
mask = mask[:0]
50-
ser = ser.iloc[:0]
51-
expected = ser[mask.astype("bool")]
52-
result = ser[mask]
50+
result = obj[mask]
5351
tm.assert_equal(result, expected)
5452

55-
if not box_mask:
56-
# Series.iloc[Series[bool]] isn't allowed
57-
result = ser.iloc[mask]
53+
if indexer_class is pd.Series:
54+
msg = "iLocation based boolean indexing cannot use an indexable as a mask"
55+
with pytest.raises(ValueError, match=msg):
56+
result = obj.iloc[mask]
57+
tm.assert_equal(result, expected)
58+
else:
59+
result = obj.iloc[mask]
5860
tm.assert_equal(result, expected)
5961

60-
result = ser.loc[mask]
62+
result = obj.loc[mask]
6163
tm.assert_equal(result, expected)
6264

6365

0 commit comments

Comments
 (0)