Эта ошибка возникает из-за различий в категориях между категориальными переменными, которые вы пытаетесь связать.В приведенном ниже примере кода все 3 серии являются категориями, но только s
и s2
имеют один и тот же тип dtype.
import pandas as pd
from pandas.api.types import is_dtype_equal
s = pd.Series(["a","b","a"], dtype="category")
s2 = pd.Series(["b","b","a"], dtype="category")
s3 = pd.Series(["a","b","c"], dtype="category")
is_dtype_equal(s.dtype, s2.dtype) # this is True
is_dtype_equal(s.dtype, s3.dtype) # this is False
Чтобы исправить это, необходимо обновить свой фрейм данных, прежде чем загружать его в Featuretools, чтобыубедитесь, что категории Pandas имеют одинаковые значения категорий значений.Вот как вы это делаете
, если в s
отсутствуют категории из s3
new_s = s.astype(s3.dtype)
is_dtype_equal(new_s.dtype, s3.dtype) # this is True
, если в обеих сериях отсутствуют категории из другой, мы должны создать объединение категорий
s4 = pd.Series(["b","c"], dtype="category")
categories = set(s.dtype.categories + s4.dtype.categories) # make union of categories
new_s = s.astype("category", categories=categories)
new_s4 = s4.astype("category", categories=categories)
is_dtype_equal(new_s.dtype, new_s4.dtype) # this is True