pandas.Series.cat.set_categories#
- Series.cat.set_categories(*args, **kwargs)[源代码]#
将类别设置为指定的新类别。
new_categories
可以包括新类别(这将导致未使用的类别)或删除旧类别(这将导致值设置为NaN
)。如果rename=True
,类别将简单地重命名(旧类别中少或多于项目将分别导致值设置为NaN
或未使用的类别)。这种方法可以用于同时执行多个操作,包括添加、删除和重新排序,因此比通过更专业的方法执行单个步骤更快。
另一方面,这种方法不进行检查(例如,在重新排序时,旧类别是否包含在新类别中),这可能导致令人惊讶的变化,例如在使用特殊字符串数据类型时,这些数据类型不认为S1字符串等于单个字符的Python字符串。
- 参数:
- new_categoriesIndex-like
新顺序中的类别。
- 有序布尔值, 默认为 None
是否将分类变量视为有序分类变量。如果未指定,则不更改有序信息。
- 重命名布尔值, 默认为 False
新类别是否应被视为旧类别的重命名或作为重新排序的类别。
- 返回:
- Categorical
新类别将被使用,可选的顺序更改。
- 引发:
- 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']
>>> 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')