Невозможно добавить связь, потому что dtypes не совпадают в Featuretools - PullRequest
0 голосов
/ 25 сентября 2018

Следующая ошибка возникает при попытке добавить связь между двумя сущностями в Featuretools

Unable to add relationship because ID in metadata is Pandas `dtype category` and ID in transactions is Pandas `dtype category`

Обратите внимание, что серии не обязательно совпадают cat.Codes

1 Ответ

0 голосов
/ 25 сентября 2018

Эта ошибка возникает из-за различий в категориях между категориальными переменными, которые вы пытаетесь связать.В приведенном ниже примере кода все 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...