Я хочу объединить категориальное сопоставление из нескольких серий, чтобы переназначить это объединение этим сериям в качестве их категориального сопоставления.Однако pd.api.types.union_categoricals
не объединяет дубликаты переданных ему категорий.Как вы должны объединить категории , а объединить дубликаты?
Рассмотрите этот фрагмент:
import pandas as pd
ac = pd.Categorical(['a1','a2', 'b1'])
bc = pd.Categorical(['b1','b2', 'a1'])
af = pd.DataFrame(pd.Series(ac, dtype="category", name='a'))
bf = pd.DataFrame(pd.Series(bc, dtype="category", name='b'))
all_categories = pd.api.types.union_categoricals([ac, bc])
print(all_categories)
af.a = af.a.cat.set_categories(all_categories)
bf.b = bf.b.cat.set_categories(all_categories)
df = af.join(bf)
Для оператора print я получаю
[a1, a2, b1, b1, b2, a1]
Categories (4, object): [a1, a2, b1, b2]
Строка af.a = af.a.cat.set_categories(all_categories)
дает мне ошибку ValueError: Categorical categories must be unique
.
Хорошо ... тогда как мне это сделать, если объединение нелогичным образом не выполняет фактическое объединение, подобное множеству, которое объединяет дубликаты?
Повторюсь: я намерен af.a
и bf.b
использовать одно и то же категориальное отображение.Для этого я сначала хочу объединить их сопоставления и заменить исходные сопоставления серии объединенными сопоставлениями.Код работает, когда all_categories
не содержит дубликатов.