Несогласованная ошибка «объект ‘float’ не повторяется» в sklearn

#python #pandas #scikit-learn #amazon-sagemaker

#python #pandas #scikit-learn #amazon-sagemaker

Вопрос:

Я знаю, что есть много вопросов с одной и той же проблемой, но ни один из них не решает мою проблему. Я использую записную книжку Jupyter в Amazon Sagemaker, и я хочу использовать хитрость хэширования для некоторых функций. Я не смог создать воспроизводимый пример с простыми данными, но вот экран данных, которые у меня есть: введите описание изображения здесь

Итак, я использовал:

 from sklearn.feature_extraction import FeatureHasher
h = FeatureHasher(n_features=10,input_type="string")
df['country_iso_code'] = h.transform(df['country_iso_code'])
h = FeatureHasher(n_features=10,input_type="string")
df['origen_tarjeta_country_iso'] = h.transform(df['origen_tarjeta_country_iso'])
  

Первое преобразование работает, но второе — нет, и я получаю ошибку «объект float’ не поддается повторению». Я проверил типы обоих столбцов, и они являются объектами, а также я проверил, что в обоих столбцах есть только строки. Я попытался воспроизвести код в Spyder с очень небольшим образцом, и это работает:

 import pandas as pd
from sklearn.feature_extraction import FeatureHasher

df = pd.DataFrame({'ES':'ES','UK':'UK'},index=[0,1])
h = FeatureHasher(n_features=10,input_type="string")
df['UK'] = h.transform(df['UK'])
h = FeatureHasher(n_features=10,input_type="string")
df['ES'] = h.transform(df['ES'])
  

Комментарии:

1. Объект не обязательно означает строку. Возможно, в этом столбце есть значение типа float. Попробуйте изменить dtype этого столбца с помощью astypr(str)

2. Это сработало, спасибо. Задайте в качестве вопроса, чтобы я мог пометить его как правильный, если хотите, пожалуйста