@@ -78,65 +78,52 @@ def test_mode(self, values, categories, exp_mode):
78
78
exp = Categorical (exp_mode , categories = categories , ordered = True )
79
79
tm .assert_categorical_equal (res , exp )
80
80
81
- def test_searchsorted (self ):
81
+ def test_searchsorted (self , ordered_fixture ):
82
82
# https://github.com/pandas-dev/pandas/issues/8420
83
83
# https://github.com/pandas-dev/pandas/issues/14522
84
84
85
- c1 = Categorical (
86
- ["cheese" , "milk" , "apple" , "bread" , "bread" ],
87
- categories = ["cheese" , "milk" , "apple" , "bread" ],
88
- ordered = True ,
89
- )
90
- s1 = Series (c1 )
91
- c2 = Categorical (
85
+ cat = Categorical (
92
86
["cheese" , "milk" , "apple" , "bread" , "bread" ],
93
87
categories = ["cheese" , "milk" , "apple" , "bread" ],
94
- ordered = False ,
88
+ ordered = ordered_fixture ,
95
89
)
96
- s2 = Series (c2 )
90
+ ser = Series (cat )
97
91
98
92
# Searching for single item argument, side='left' (default)
99
- res_cat = c1 .searchsorted ("apple" )
93
+ res_cat = cat .searchsorted ("apple" )
100
94
assert res_cat == 2
101
95
assert is_scalar (res_cat )
102
96
103
- res_ser = s1 .searchsorted ("apple" )
97
+ res_ser = ser .searchsorted ("apple" )
104
98
assert res_ser == 2
105
99
assert is_scalar (res_ser )
106
100
107
101
# Searching for single item array, side='left' (default)
108
- res_cat = c1 .searchsorted (["bread" ])
109
- res_ser = s1 .searchsorted (["bread" ])
102
+ res_cat = cat .searchsorted (["bread" ])
103
+ res_ser = ser .searchsorted (["bread" ])
110
104
exp = np .array ([3 ], dtype = np .intp )
111
105
tm .assert_numpy_array_equal (res_cat , exp )
112
106
tm .assert_numpy_array_equal (res_ser , exp )
113
107
114
108
# Searching for several items array, side='right'
115
- res_cat = c1 .searchsorted (["apple" , "bread" ], side = "right" )
116
- res_ser = s1 .searchsorted (["apple" , "bread" ], side = "right" )
109
+ res_cat = cat .searchsorted (["apple" , "bread" ], side = "right" )
110
+ res_ser = ser .searchsorted (["apple" , "bread" ], side = "right" )
117
111
exp = np .array ([3 , 5 ], dtype = np .intp )
118
112
tm .assert_numpy_array_equal (res_cat , exp )
119
113
tm .assert_numpy_array_equal (res_ser , exp )
120
114
121
115
# Searching for a single value that is not from the Categorical
122
116
msg = r"Value\(s\) to be inserted must be in categories"
123
117
with pytest .raises (KeyError , match = msg ):
124
- c1 .searchsorted ("cucumber" )
118
+ cat .searchsorted ("cucumber" )
125
119
with pytest .raises (KeyError , match = msg ):
126
- s1 .searchsorted ("cucumber" )
120
+ ser .searchsorted ("cucumber" )
127
121
128
122
# Searching for multiple values one of each is not from the Categorical
129
123
with pytest .raises (KeyError , match = msg ):
130
- c1 .searchsorted (["bread" , "cucumber" ])
124
+ cat .searchsorted (["bread" , "cucumber" ])
131
125
with pytest .raises (KeyError , match = msg ):
132
- s1 .searchsorted (["bread" , "cucumber" ])
133
-
134
- # searchsorted call for unordered Categorical
135
- msg = "Categorical not ordered"
136
- with pytest .raises (ValueError , match = msg ):
137
- c2 .searchsorted ("apple" )
138
- with pytest .raises (ValueError , match = msg ):
139
- s2 .searchsorted ("apple" )
126
+ ser .searchsorted (["bread" , "cucumber" ])
140
127
141
128
def test_unique (self ):
142
129
# categories are reordered based on value when ordered=False
0 commit comments