У меня есть фрейм данных, подобный следующему:
test = {"viral": "pos", "Status": "positive", "Age": 59, "score": 5}
test2 = {"viral": "neg"}
df = pd.DataFrame.from_dict([test, test2])
Я хочу закодировать символьные столбцы (вирусные, Status) в виде порядковых чисел, но оставить только числовые значения.Требуемый вывод - это пустой массив с одинаковыми именами столбцов.
Если я использую OrdinalEncoder из sklearn, он не работает со значениями NaN.Даже если бы не было значений NaN, он все равно будет порядковым образом кодировать числовые столбцы.Я хочу заполнить значения NaN 0 в символьных столбцах, но сохранить NaN в числовых столбцах.
Какой самый простой способ сделать это?
Желаемый вывод (в массиве numpy):
Age Status score viral
0 59.0 1 5.0 1
1 NaN 0 NaN 0
Спасибо!Джек
РЕДАКТИРОВАТЬ: Я также хотел бы, чтобы преобразование из закодированного значения в исходное значение, например {i: dict(enumerate(v)) for i, v in enumerate(enc.categories_)}
при использовании enc=OrdinalEncoder()
(см. Векторизация двумерного массива символов по столбцам )