|
22 | 22 | ensure_int64,
|
23 | 23 | ensure_object,
|
24 | 24 | ensure_platform_int,
|
25 |
| - is_categorical, |
26 | 25 | is_categorical_dtype,
|
27 | 26 | is_datetime64_dtype,
|
28 | 27 | is_datetimelike,
|
@@ -2659,18 +2658,18 @@ def _get_codes_for_values(values, categories):
|
2659 | 2658 | return coerce_indexer_dtype(t.lookup(vals), cats)
|
2660 | 2659 |
|
2661 | 2660 |
|
2662 |
| -def _recode_for_categories(codes, old_categories, new_categories): |
| 2661 | +def _recode_for_categories(codes: np.ndarray, old_categories, new_categories): |
2663 | 2662 | """
|
2664 | 2663 | Convert a set of codes for to a new set of categories
|
2665 | 2664 |
|
2666 | 2665 | Parameters
|
2667 | 2666 | ----------
|
2668 |
| - codes : array |
| 2667 | + codes : np.ndarray |
2669 | 2668 | old_categories, new_categories : Index
|
2670 | 2669 |
|
2671 | 2670 | Returns
|
2672 | 2671 | -------
|
2673 |
| - new_codes : array |
| 2672 | + new_codes : np.ndarray[np.int64] |
2674 | 2673 |
|
2675 | 2674 | Examples
|
2676 | 2675 | --------
|
@@ -2725,17 +2724,15 @@ def _factorize_from_iterable(values):
|
2725 | 2724 | If `values` has a categorical dtype, then `categories` is
|
2726 | 2725 | a CategoricalIndex keeping the categories and order of `values`.
|
2727 | 2726 | """
|
2728 |
| - from pandas.core.indexes.category import CategoricalIndex |
2729 |
| - |
2730 | 2727 | if not is_list_like(values):
|
2731 | 2728 | raise TypeError("Input must be list-like")
|
2732 | 2729 |
|
2733 |
| - if is_categorical(values): |
2734 |
| - values = CategoricalIndex(values) |
2735 |
| - # The CategoricalIndex level we want to build has the same categories |
| 2730 | + if is_categorical_dtype(values): |
| 2731 | + values = extract_array(values) |
| 2732 | + # The Categorical we want to build has the same categories |
2736 | 2733 | # as values but its codes are by def [0, ..., len(n_categories) - 1]
|
2737 | 2734 | cat_codes = np.arange(len(values.categories), dtype=values.codes.dtype)
|
2738 |
| - categories = values._create_from_codes(cat_codes) |
| 2735 | + categories = Categorical.from_codes(cat_codes, dtype=values.dtype) |
2739 | 2736 | codes = values.codes
|
2740 | 2737 | else:
|
2741 | 2738 | # The value of ordered is irrelevant since we don't use cat as such,
|
|
0 commit comments