|
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