dask.dataframe.Series.cat.set_categories

dask.dataframe.Series.cat.set_categories

dataframe.Series.cat.set_categories(*args, **kwargs)

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

此文档字符串是从 pandas.core.arrays.categorical.CategoricalAccessor.set_categories 复制的。

Dask 版本可能存在一些不一致性。

new_categories 可以包括新类别(这将导致未使用的类别)或删除旧类别(这将导致值设置为 NaN)。如果 rename=True,类别将简单地重命名(旧类别中的项目少或多将分别导致值设置为 NaN 或未使用的类别)。

此方法可用于同时执行添加、删除和重新排序等多项操作,因此比通过更专业的方法执行单个步骤更快。

另一方面,这种方法不进行检查(例如,在重新排序时,旧类别是否包含在新类别中),这可能导致意外的变化,例如在使用特殊字符串数据类型时,它不认为S1字符串等于单个字符的Python字符串。

参数
新分类索引类

新顺序中的类别。

有序bool, 默认 False

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

重命名bool, 默认 False

新类别是否应被视为旧类别的重命名,还是作为重新排序的类别。

返回
重新排序类别的分类变量。
Raises
ValueError

如果 new_categories 不能验证为类别

参见

rename_categories

重命名类别。

reorder_categories

重新排序类别。

add_categories

添加新类别。

remove_categories

移除指定的类别。

remove_unused_categories

移除未使用的类别。

示例

对于 pandas.Series:

>>> raw_cat = pd.Categorical(['a', 'b', 'c', 'A'],  
...                           categories=['a', 'b', 'c'], ordered=True)
>>> ser = pd.Series(raw_cat)  
>>> ser  
0   a
1   b
2   c
3   NaN
dtype: category
Categories (3, object): ['a' < 'b' < 'c']
>>> ser.cat.set_categories(['A', 'B', 'C'], rename=True)  
0   A
1   B
2   C
3   NaN
dtype: category
Categories (3, object): ['A' < 'B' < 'C']

对于 pandas.CategoricalIndex:

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'A'],  
...                          categories=['a', 'b', 'c'], ordered=True)
>>> ci  
CategoricalIndex(['a', 'b', 'c', nan], categories=['a', 'b', 'c'],
                 ordered=True, dtype='category')
>>> ci.set_categories(['A', 'b', 'c'])  
CategoricalIndex([nan, 'b', 'c', nan], categories=['A', 'b', 'c'],
                 ordered=True, dtype='category')
>>> ci.set_categories(['A', 'b', 'c'], rename=True)  
CategoricalIndex(['A', 'b', 'c', nan], categories=['A', 'b', 'c'],
                 ordered=True, dtype='category')