|
23 | 23 | DatetimeIndex,
|
24 | 24 | Index,
|
25 | 25 | IndexSlice,
|
26 |
| - Int64Index, |
27 | 26 | MultiIndex,
|
28 | 27 | Period,
|
29 |
| - RangeIndex, |
30 | 28 | Series,
|
31 | 29 | SparseDtype,
|
32 | 30 | Timedelta,
|
33 | 31 | Timestamp,
|
34 |
| - UInt64Index, |
35 | 32 | date_range,
|
36 | 33 | timedelta_range,
|
37 | 34 | to_datetime,
|
@@ -2089,55 +2086,22 @@ def test_loc_getitem_slice_columns_mixed_dtype(self):
|
2089 | 2086 |
|
2090 | 2087 |
|
2091 | 2088 | class TestLocBooleanLabelsAndSlices(Base):
|
2092 |
| - @pytest.mark.parametrize( |
2093 |
| - "index", |
2094 |
| - [ |
2095 |
| - RangeIndex(4), |
2096 |
| - Int64Index(range(4)), |
2097 |
| - UInt64Index(range(4)), |
2098 |
| - pd.Float64Index(range(4)), |
2099 |
| - CategoricalIndex(range(4)), |
2100 |
| - date_range(0, periods=4, freq="ns"), |
2101 |
| - timedelta_range(0, periods=4, freq="ns"), |
2102 |
| - pd.interval_range(0, periods=4), |
2103 |
| - Index([0, 1, 2, 3], dtype=object), |
2104 |
| - MultiIndex.from_product([[0, 1], [0, 1]]), |
2105 |
| - pd.period_range("2018Q1", freq="Q", periods=4), |
2106 |
| - ], |
2107 |
| - ) |
2108 | 2089 | def test_loc_bool_incompatible_index_raises(self, index, frame_or_series):
|
2109 | 2090 | # GH20432
|
2110 | 2091 | message = "Boolean label can not be used without a boolean index"
|
2111 |
| - obj = frame_or_series(range(4), index=index) |
2112 |
| - with pytest.raises(TypeError, match=message): |
2113 |
| - obj.loc[True] |
| 2092 | + if index.inferred_type != "boolean": |
| 2093 | + obj = frame_or_series(index=index) |
| 2094 | + with pytest.raises(TypeError, match=message): |
| 2095 | + obj.loc[True] |
2114 | 2096 |
|
2115 |
| - @pytest.mark.parametrize("index", [Index([True, False], dtype="boolean")]) |
2116 |
| - def test_loc_bool_should_not_raise(self, index, frame_or_series): |
2117 |
| - obj = frame_or_series(range(2), index=index) |
| 2097 | + def test_loc_bool_should_not_raise(self, frame_or_series): |
| 2098 | + obj = frame_or_series(index=Index([True, False], dtype="boolean")) |
2118 | 2099 | obj.loc[True]
|
2119 | 2100 |
|
2120 |
| - @pytest.mark.parametrize( |
2121 |
| - "index", |
2122 |
| - [ |
2123 |
| - RangeIndex(4), |
2124 |
| - Int64Index(range(4)), |
2125 |
| - UInt64Index(range(4)), |
2126 |
| - pd.Float64Index(range(4)), |
2127 |
| - CategoricalIndex(range(4)), |
2128 |
| - date_range(0, periods=4, freq="ns"), |
2129 |
| - timedelta_range(0, periods=4, freq="ns"), |
2130 |
| - pd.interval_range(0, periods=4), |
2131 |
| - Index([0, 1, 2, 3], dtype=object), |
2132 |
| - Index([True, True, False, False], dtype=object), |
2133 |
| - MultiIndex.from_product([[0, 1], [0, 1]]), |
2134 |
| - pd.period_range("2018Q1", freq="Q", periods=4), |
2135 |
| - ], |
2136 |
| - ) |
2137 | 2101 | def test_loc_bool_slice_raises(self, index, frame_or_series):
|
2138 | 2102 | # GH20432
|
2139 | 2103 | message = "Boolean values can not be used in a slice"
|
2140 |
| - obj = frame_or_series(range(4), index=index) |
| 2104 | + obj = frame_or_series(index=index) |
2141 | 2105 | with pytest.raises(TypeError, match=message):
|
2142 | 2106 | obj.loc[True:False]
|
2143 | 2107 |
|
|
0 commit comments