pandas.api.types.union_categoricals #

pandas.api.types。union_categoricals ( to_union , sort_categories = False , ignore_order = False ) [来源] #

将类列表的类联合类别组合起来。

所有类别必须具有相同的 dtype。

参数
to_union类似列表

dtype='category' 的分类、分类索引或系列。

sort_categories bool, 默认 False

如果为 true,则将对生成的类别进行词法排序,否则将按照数据中出现的顺序进行排序。

ignore_order bool,默认 False

如果为 true,则类别的有序属性将被忽略。结果是无序的分类。

返回
分类的
加薪
类型错误
  • 所有输入不具有相同的数据类型

  • 所有输入不具有相同的有序属性

  • 所有输入都是有序的,并且它们的类别不相同

  • sort_categories=True 且分类已排序

值错误

已传递空分类列表

笔记

要了解有关类别的更多信息,请参阅链接

例子

如果您想组合不一定具有相同类别的分类,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']

默认情况下,结果类别将按照数据类别中出现的顺序进行排序。如果您希望对类别进行词法排序,请使用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还适用于组合相同类别的两个分类和顺序信息(例如您还可以附加的内容)的情况。

>>> 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']