pandas.api.types.union_categoricals
- pandas.api.types.union_categoricals(to_union, sort_categories=False, ignore_order=False)[source]
-
Объединение спископодобных объектов Categorical, объединяющих категории.
Все категории должны иметь один и тот же тип данных.
- Параметры
-
- to_union:спископодобный объект
-
Categorical, CategoricalIndex или Series с типом данных ‘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']
По умолчанию результирующие категории будут упорядочены так, как они появляются в категориях данных. Если вы хотите, чтобы категории были отсортированы лексикографически, используйте аргумент 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Введено в версии 0.20.0
Упорядоченные категориальные переменные с различными категориями или порядками могут быть объединены с использованием аргумента 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/1.5.0/reference/api/pandas.api.types.union_categoricals.html