Spec-Zone.ru › pandas 2

pandas.api.types.union_categoricals

pandas.api.types.union_categoricals(to_union, sort_categories=False, ignore_order=False)[source]

Объединение списка категориальных объектов, объединение категорий.

Все категории должны иметь одинаковый тип.

Параметры:
to_union:подобный списку

Categorical, CategoricalIndex или Series с типом dtype=’category’.

sort_categories:bool, по умолчанию False

Если True, результирующие категории будут лексикографически отсортированы, в противном случае они будут упорядочены так, как появляются в данных.

ignore_order:bool, по умолчанию False

Если True, атрибут ordered категориальных значений будет проигнорирован. Результатом будет неупорядоченная категория.

Возвращает:
Categorical
Исключения:
TypeError
  • все входные данные не имеют одинаковый тип

  • все входные данные не имеют одинаковый атрибут ordered

  • все входные данные упорядочены, и их категории не идентичны

  • sort_categories=True и Categoricals упорядочены

ValueError

Передан пустой список категорий

Примечания

Чтобы узнать больше о категориях, см. ссылку

Примеры

Если вы хотите объединить категориальные значения, которые не обязательно имеют одинаковые категории, 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']

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.api.types.union_categoricals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API