pandas.Categorical.reorder_categories#

Categorical.reorder_categories(new_categories, ordered=None)[源代码][源代码]#

按照 new_categories 中的指定重新排序类别。

new_categories 需要包含所有旧类别,并且不包含新的类别项。

参数:
new_categoriesIndex-like

新顺序中的类别。

有序布尔值, 可选

是否将分类变量视为有序分类变量。如果未给出,则不更改有序信息。

返回:
Categorical

重新排序类别的分类变量。

引发:
ValueError

如果新类别不包含所有旧类别项目或任何新项目

参见

rename_categories

重命名类别。

add_categories

添加新类别。

remove_categories

移除指定的类别。

remove_unused_categories

移除未使用的类别。

set_categories

将类别设置为指定的类别。

例子

对于 pandas.Series:

>>> ser = pd.Series(["a", "b", "c", "a"], dtype="category")
>>> ser = ser.cat.reorder_categories(["c", "b", "a"], ordered=True)
>>> ser
0   a
1   b
2   c
3   a
dtype: category
Categories (3, object): ['c' < 'b' < 'a']
>>> ser.sort_values()
2   c
1   b
0   a
3   a
dtype: category
Categories (3, object): ['c' < 'b' < 'a']

对于 pandas.CategoricalIndex:

>>> ci = pd.CategoricalIndex(["a", "b", "c", "a"])
>>> ci
CategoricalIndex(['a', 'b', 'c', 'a'], categories=['a', 'b', 'c'],
                 ordered=False, dtype='category')
>>> ci.reorder_categories(["c", "b", "a"], ordered=True)
CategoricalIndex(['a', 'b', 'c', 'a'], categories=['c', 'b', 'a'],
                 ordered=True, dtype='category')