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