#python #scikit-learn
#python #scikit-learn
Вопрос:
Я вменяю пропущенные значения в конвейере.
На первом шаге я записываю переменную в бин, используя:
df_listings['original.listing.rooms.bedrooms.count'] = pd.cut(df_listings['original.listing.rooms.bedrooms.count'], bins = [1,2,3,4,5,6,10,50])
df_listings = df_listings.fillna(np.nan)
На втором шаге я хочу приписать столбец, используя
si = SimpleImputer(missing_values=np.nan,strategy="most_frequent")
si.fit_transform(df_listings[['original.listing.rooms.bedrooms.count']])
Несмотря на то, что я следовал этому потоку с другими переменными, здесь я получаю следующую ошибку:
TypeError: unsupported operand type(s) for : 'pandas._libs.interval.Interval' and 'pandas._libs.interval.Interval'
The above exception was the direct cause of the following exception:
...
SystemError: <built-in function _abc_instancecheck> returned a result with an error set
Я не могу понять причину, по которой я получаю эту ошибку. Для других переменных я могу работать с pandas.Интервал, только эта переменная вызывает проблему.
Ответ №1:
Поскольку мы работаем с категориальными данными, добавление .astype(str) в ваш pd.cut делает свое дело.
df_listings['original.listing.rooms.bedrooms.count'] = pd.cut(df_listings['original.listing.rooms.bedrooms.count'], bins = [1,2,3,4,5,6,10,50]).astype(str)