Я не знаю назначения функции, но выполнение кода и просмотр результата говорит мне следующее:
Получаемое вами значение ValueError говорит вам, что функция ожидает числовые данные, а неstrings.
Также обратите внимание, что флаг handle_unknown не означает, что функция принимает значения None или nan, а скорее управляет обработкой категорий в тестовых данных, которых не было в обучающих данных (см. примерниже).
Работает следующий код, включающий неизвестные категории:
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder
train = pd.DataFrame({
'users':[1,2,3,4],'users2':[1,2,3,4]
})
test = pd.DataFrame({
'users':[0,1,3,4,10],'users3':[1,2,3,4,5]
})
ohe = OneHotEncoder(sparse=False,handle_unknown='ignore')
ohe.fit(train)
train_transformed = ohe.fit_transform(train)
test_transformed = ohe.transform(test)
print(test_transformed)
Надеюсь, это поможет. Замена отсутствующих данных работает аналогично тому, что было предложено в предыдущем ответе.