|
6 | 6 |
|
7 | 7 | from pandas.compat import PYPY |
8 | 8 |
|
9 | | -from pandas import Categorical, Index, NaT, Series, date_range |
| 9 | +from pandas import Categorical, CategoricalDtype, Index, NaT, Series, date_range |
10 | 10 | import pandas._testing as tm |
11 | 11 | from pandas.api.types import is_scalar |
12 | 12 |
|
@@ -188,84 +188,49 @@ def test_searchsorted(self, ordered): |
188 | 188 | with pytest.raises(KeyError, match="cucumber"): |
189 | 189 | ser.searchsorted(["bread", "cucumber"]) |
190 | 190 |
|
191 | | - def test_unique(self): |
| 191 | + def test_unique(self, ordered): |
| 192 | + # GHXXXXX |
| 193 | + dtype = CategoricalDtype(["a", "b", "c"], ordered=ordered) |
| 194 | + |
192 | 195 | # categories are reordered based on value when ordered=False |
193 | | - cat = Categorical(["a", "b"]) |
194 | | - exp = Index(["a", "b"]) |
| 196 | + cat = Categorical(["a", "b", "c"], dtype=dtype) |
195 | 197 | res = cat.unique() |
196 | | - tm.assert_index_equal(res.categories, exp) |
197 | 198 | tm.assert_categorical_equal(res, cat) |
198 | 199 |
|
199 | | - cat = Categorical(["a", "b", "a", "a"], categories=["a", "b", "c"]) |
| 200 | + cat = Categorical(["a", "b", "a", "a"], dtype=dtype) |
200 | 201 | res = cat.unique() |
201 | | - tm.assert_index_equal(res.categories, exp) |
202 | | - tm.assert_categorical_equal(res, Categorical(exp)) |
| 202 | + tm.assert_categorical_equal(res, Categorical(["a", "b"], dtype=dtype)) |
203 | 203 |
|
204 | | - cat = Categorical(["c", "a", "b", "a", "a"], categories=["a", "b", "c"]) |
205 | | - exp = Index(["c", "a", "b"]) |
| 204 | + cat = Categorical(["c", "a", "b", "a", "a"], dtype=dtype) |
206 | 205 | res = cat.unique() |
207 | | - tm.assert_index_equal(res.categories, exp) |
208 | | - exp_cat = Categorical(exp, categories=["c", "a", "b"]) |
| 206 | + exp_cat = Categorical(["c", "a", "b"], dtype=dtype) |
209 | 207 | tm.assert_categorical_equal(res, exp_cat) |
210 | 208 |
|
211 | 209 | # nan must be removed |
212 | | - cat = Categorical(["b", np.nan, "b", np.nan, "a"], categories=["a", "b", "c"]) |
213 | | - res = cat.unique() |
214 | | - exp = Index(["b", "a"]) |
215 | | - tm.assert_index_equal(res.categories, exp) |
216 | | - exp_cat = Categorical(["b", np.nan, "a"], categories=["b", "a"]) |
217 | | - tm.assert_categorical_equal(res, exp_cat) |
218 | | - |
219 | | - def test_unique_ordered(self): |
220 | | - # keep categories order when ordered=True |
221 | | - cat = Categorical(["b", "a", "b"], categories=["a", "b"], ordered=True) |
| 210 | + cat = Categorical(["b", np.nan, "b", np.nan, "a"], dtype=dtype) |
222 | 211 | res = cat.unique() |
223 | | - exp_cat = Categorical(["b", "a"], categories=["a", "b"], ordered=True) |
| 212 | + exp_cat = Categorical(["b", np.nan, "a"], dtype=dtype) |
224 | 213 | tm.assert_categorical_equal(res, exp_cat) |
225 | 214 |
|
226 | | - cat = Categorical( |
227 | | - ["c", "b", "a", "a"], categories=["a", "b", "c"], ordered=True |
228 | | - ) |
229 | | - res = cat.unique() |
230 | | - exp_cat = Categorical(["c", "b", "a"], categories=["a", "b", "c"], ordered=True) |
231 | | - tm.assert_categorical_equal(res, exp_cat) |
232 | | - |
233 | | - cat = Categorical(["b", "a", "a"], categories=["a", "b", "c"], ordered=True) |
234 | | - res = cat.unique() |
235 | | - exp_cat = Categorical(["b", "a"], categories=["a", "b"], ordered=True) |
236 | | - tm.assert_categorical_equal(res, exp_cat) |
| 215 | + def test_unique_index_series(self, ordered): |
| 216 | + # GHXXXXX |
| 217 | + dtype = CategoricalDtype([3, 2, 1], ordered=ordered) |
237 | 218 |
|
238 | | - cat = Categorical( |
239 | | - ["b", "b", np.nan, "a"], categories=["a", "b", "c"], ordered=True |
240 | | - ) |
241 | | - res = cat.unique() |
242 | | - exp_cat = Categorical(["b", np.nan, "a"], categories=["a", "b"], ordered=True) |
243 | | - tm.assert_categorical_equal(res, exp_cat) |
244 | | - |
245 | | - def test_unique_index_series(self): |
246 | | - c = Categorical([3, 1, 2, 2, 1], categories=[3, 2, 1]) |
| 219 | + c = Categorical([3, 1, 2, 2, 1], dtype=dtype) |
247 | 220 | # Categorical.unique sorts categories by appearance order |
248 | 221 | # if ordered=False |
249 | | - exp = Categorical([3, 1, 2], categories=[3, 1, 2]) |
| 222 | + exp = Categorical([3, 1, 2], dtype=dtype) |
250 | 223 | tm.assert_categorical_equal(c.unique(), exp) |
251 | 224 |
|
252 | 225 | tm.assert_index_equal(Index(c).unique(), Index(exp)) |
253 | 226 | tm.assert_categorical_equal(Series(c).unique(), exp) |
254 | 227 |
|
255 | | - c = Categorical([1, 1, 2, 2], categories=[3, 2, 1]) |
256 | | - exp = Categorical([1, 2], categories=[1, 2]) |
| 228 | + c = Categorical([1, 1, 2, 2], dtype=dtype) |
| 229 | + exp = Categorical([1, 2], dtype=dtype) |
257 | 230 | tm.assert_categorical_equal(c.unique(), exp) |
258 | 231 | tm.assert_index_equal(Index(c).unique(), Index(exp)) |
259 | 232 | tm.assert_categorical_equal(Series(c).unique(), exp) |
260 | 233 |
|
261 | | - c = Categorical([3, 1, 2, 2, 1], categories=[3, 2, 1], ordered=True) |
262 | | - # Categorical.unique keeps categories order if ordered=True |
263 | | - exp = Categorical([3, 1, 2], categories=[3, 2, 1], ordered=True) |
264 | | - tm.assert_categorical_equal(c.unique(), exp) |
265 | | - |
266 | | - tm.assert_index_equal(Index(c).unique(), Index(exp)) |
267 | | - tm.assert_categorical_equal(Series(c).unique(), exp) |
268 | | - |
269 | 234 | def test_shift(self): |
270 | 235 | # GH 9416 |
271 | 236 | cat = Categorical(["a", "b", "c", "d", "a"]) |
|
0 commit comments