Skip to content

Commit 46cc883

Browse files
renaming and added a comment
1 parent c724ba0 commit 46cc883

File tree

1 file changed

+18
-57
lines changed

1 file changed

+18
-57
lines changed

pandas/tests/indexing/test_na_indexing.py

+18-57
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"),
@@ -25,80 +26,40 @@
2526
@pytest.mark.parametrize("indexer_class", [list, pd.array, pd.Index, pd.Series])
2627
@pytest.mark.parametrize("frame", [True, False])
2728
def test_series_mask_boolean(values, dtype, mask, indexer_class, frame):
28-
ser = pd.Series(values, dtype=dtype, index=["a", "b", "c"])
29-
if frame:
30-
ser = ser.to_frame()
31-
32-
if indexer_class is pd.array:
33-
mask = pd.array(mask, dtype="boolean")
34-
elif indexer_class is pd.Series:
35-
mask = pd.Series(mask, index=ser.index)
36-
else:
37-
mask = indexer_class(mask)
29+
# In case len(values) < 3
30+
index = ["a", "b", "c"][: len(values)]
31+
mask = mask[: len(values)]
3832

39-
expected = ser[mask]
40-
41-
result = ser[mask]
42-
tm.assert_equal(result, expected)
43-
44-
msg = "iLocation based boolean indexing cannot use an indexable as a mask"
45-
if indexer_class is pd.Series:
46-
with pytest.raises(ValueError, match=msg):
47-
result = ser.iloc[mask]
48-
tm.assert_equal(result, expected)
49-
else:
50-
result = ser.iloc[mask]
51-
tm.assert_equal(result, expected)
52-
53-
result = ser.loc[mask]
54-
tm.assert_equal(result, expected)
55-
56-
57-
@pytest.mark.parametrize(
58-
"dtype",
59-
[
60-
"int64",
61-
"float64",
62-
"object",
63-
"string",
64-
"datetime64[ns]",
65-
"datetime64[ns, CET]",
66-
"timedelta64[ns]",
67-
"Period[D]",
68-
"Sparse",
69-
"interval",
70-
],
71-
)
72-
@pytest.mark.parametrize("indexer_class", [list, pd.array, pd.Index, pd.Series])
73-
@pytest.mark.parametrize("frame", [True, False])
74-
def test_series_mask_boolean_empty(dtype, indexer_class, frame):
33+
obj = pd.Series(values, dtype=dtype, index=index)
7534
if frame:
76-
ser = pd.DataFrame(dtype=dtype)
77-
else:
78-
ser = pd.Series(dtype=dtype)
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()
7940

80-
mask = []
8141
if indexer_class is pd.array:
8242
mask = pd.array(mask, dtype="boolean")
8343
elif indexer_class is pd.Series:
84-
mask = pd.Series(mask, index=ser.index, dtype="boolean")
44+
mask = pd.Series(mask, index=obj.index, dtype="boolean")
8545
else:
8646
mask = indexer_class(mask)
8747

88-
expected = ser[mask]
89-
result = ser[mask]
48+
expected = obj[mask]
49+
50+
result = obj[mask]
9051
tm.assert_equal(result, expected)
9152

92-
msg = "iLocation based boolean indexing cannot use an indexable as a mask"
9353
if indexer_class is pd.Series:
54+
msg = "iLocation based boolean indexing cannot use an indexable as a mask"
9455
with pytest.raises(ValueError, match=msg):
95-
result = ser.iloc[mask]
56+
result = obj.iloc[mask]
9657
tm.assert_equal(result, expected)
9758
else:
98-
result = ser.iloc[mask]
59+
result = obj.iloc[mask]
9960
tm.assert_equal(result, expected)
10061

101-
result = ser.loc[mask]
62+
result = obj.loc[mask]
10263
tm.assert_equal(result, expected)
10364

10465

0 commit comments

Comments
 (0)