pandas.api.types.union_categoricals#
- pandas.api.types.union_categoricals(to_union, sort_categories=False, ignore_order=False)[源代码][源代码]#
合并类似列表的分类数据,联合类别。
所有类别必须具有相同的 dtype。
- 参数:
- to_unionlist-like
类别型,CategoricalIndex,或带有 dtype=’category’ 的 Series。
- sort_categories布尔值, 默认为 False
如果为真,生成的类别将按字母顺序排序,否则它们将按它们在数据中出现的顺序排序。
- ignore_order布尔值, 默认为 False
如果为真,Categoricals 的有序属性将被忽略。结果是一个无序的分类。
- 返回:
- Categorical
被合并的类别联合。
- 引发:
- TypeError
所有输入的 dtype 并不相同
所有输入并不具有相同的顺序属性
所有输入都是有序的,它们的类别并不相同。
sort_categories=True 并且分类数据是有序的
- ValueError
传递的分类列表为空
参见
CategoricalDtype
用于分类数据的类型,包含类别和有序性。
分类
以经典的 R / S-plus 风格表示分类变量。
注释
要了解更多关于类别的信息,请参见 链接
例子
如果你想合并不一定具有相同类别的分类数据,union_categoricals 将合并一个类似列表的分类数据。新的类别将是被合并类别的并集。
>>> a = pd.Categorical(["b", "c"]) >>> b = pd.Categorical(["a", "b"]) >>> pd.api.types.union_categoricals([a, b]) ['b', 'c', 'a', 'b'] Categories (3, object): ['b', 'c', 'a']
默认情况下,生成的类别将按照它们在数据的 categories 中出现的顺序排列。如果你想让类别按字母顺序排序,请使用 sort_categories=True 参数。
>>> pd.api.types.union_categoricals([a, b], sort_categories=True) ['b', 'c', 'a', 'b'] Categories (3, object): ['a', 'b', 'c']
union_categoricals 也可以处理合并两个具有相同类别和顺序信息的分类变量的情况(例如,这也是你可以使用 append 的地方)。
>>> a = pd.Categorical(["a", "b"], ordered=True) >>> b = pd.Categorical(["a", "b", "a"], ordered=True) >>> pd.api.types.union_categoricals([a, b]) ['a', 'b', 'a', 'b', 'a'] Categories (2, object): ['a' < 'b']
引发 TypeError 因为类别是有序的且不相同。
>>> a = pd.Categorical(["a", "b"], ordered=True) >>> b = pd.Categorical(["a", "b", "c"], ordered=True) >>> pd.api.types.union_categoricals([a, b]) Traceback (most recent call last): ... TypeError: to union ordered Categoricals, all categories must be the same
通过使用 ignore_ordered=True 参数,可以合并具有不同类别或顺序的有序分类。
>>> a = pd.Categorical(["a", "b", "c"], ordered=True) >>> b = pd.Categorical(["c", "b", "a"], ordered=True) >>> pd.api.types.union_categoricals([a, b], ignore_order=True) ['a', 'b', 'c', 'c', 'b', 'a'] Categories (3, object): ['a', 'b', 'c']
union_categoricals 也可以与 CategoricalIndex 或包含分类数据的 Series 一起使用,但请注意,结果数组始终是一个普通的 Categorical
>>> a = pd.Series(["b", "c"], dtype="category") >>> b = pd.Series(["a", "b"], dtype="category") >>> pd.api.types.union_categoricals([a, b]) ['b', 'c', 'a', 'b'] Categories (3, object): ['b', 'c', 'a']