#python #dataframe #apache-spark #pyspark #one-hot-encoding
#python #фрейм данных #apache-spark #pyspark #one-hot-encoding
Вопрос:
Я применяю функцию OneHotEncoding к двум очень похожим фреймам данных. Первый фрейм данных выглядит следующим образом:
Когда я применяю одно горячее кодирование, все работает нормально:
Однако, когда я применяю точно такую же функцию к этому другому, но очень похожему фрейму данных:
Возникает следующая ошибка:
Я не понимаю, почему это происходит, потому что фреймы данных 1 и 2 были извлечены из предыдущего фрейма данных (они работают как обучающий и тестовый df для приложения машинного обучения). Оба являются фреймами данных pyspark.sql. Кто-нибудь может мне помочь?
Комментарии:
1. Вы уверены, что столбец «район» содержит только целые числа во втором фрейме данных?
Ответ №1:
Как указано в ошибке, вы не можете отсортировать список, содержащий None
целые числа и. Возможно null
, в вашей колонке есть буква «а», которая приводит categories.sort()
к сбою строки.
Если вы хотите сделать ML с помощью Spark, я бы посоветовал использовать pyspark.ml пакет, вместо того чтобы писать свой собственный одноразовый кодировщик. Например, смотрите здесь .
Комментарии:
1. Я даже не заметил этого, потому что предполагалось, что эти данные были обработаны ранее и не должны были иметь каких-либо пропущенных значений… Спасибо!
2. Вы уверены, что это проблема здесь? Я не понимаю, как значение null в столбце A может привести к сбою функции .sort() для значений из столбца B.
3. @couka может быть, где-то еще в столбце B.
4. Я применил эту строку ex_2 = ex_2.na.fill(0), и теперь все работает нормально. Спасибо вам обоим!!
5. @mck Да, это моя точка зрения. Спасибо за обновление ответа.