pandas.Series.cat.set_categories#
- Series.cat.set_categories(*args, **kwargs)[源代码]#
将类别设置为指定的 new_categories。
new_categories可以包含新类别(这将导致出现未使用的类别)或删除旧类别(这将导致将值设为NaN)。如果rename=True,类别将被简单地重命名(项数少于或多于旧类别将分别导致值设为NaN或出现未使用类别)。此方法可用于同时执行添加、删除和重新排序等多种操作,因此比通过更专业的方法执行单独的步骤要快。
另一方面,此方法不执行检查(例如,检查旧类别是否包含在新类别中进行重新排序),这可能导致意外的更改,例如在使用特殊的字符串 dtype 时,它不认为 S1 字符串与单个字符的 python 字符串相等。
- Parameters:
- new_categories类索引
按新顺序排列的类别。
- orderedbool,默认 False
该分类是否被视为有序分类。如果未给出,则不改变有序信息。
- renamebool,默认 False
new_categories 是否应被视为旧类别的重命名,还是视为重新排序的类别。
- Returns:
- 类别已重排的分类。
- Raises:
- ValueError
如果 new_categories 无法验证为类别
参见
rename_categories重命名类别。
reorder_categories重新排序类别。
add_categories添加新类别。
remove_categories删除指定的类别。
remove_unused_categories删除未使用的类别。
Examples
>>> 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']
>>> 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')