Я пытаюсь запустить PCA из sklearn, и я продолжаю получать ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
.Это удивляет меня, так как я использовал df.dropna()
и len(df)
изменился с 4096 до 1566 после использования drop.na()
.
Я пробовал много вещей, таких как сброс индекса, создание явного копирования и т. Д., Но ничего не получалось.Пример ниже продемонстрирует минимальный пример того, что мне кажется странным поведением.
df_test = pd.DataFrame([[0.11, 0.22],[1.11, 1.22]], columns=['s1', 's2'])
когда я делаю
df_test[df_test.isna()]
я получаю:
s1 s2
0 NaN NaN
1 NaN NaN
и когда:
df_test[~df_test.isna()]
я получаю:
s1 s2
0 0.11 0.22
1 1.11 1.22
то, что я ожидаю от
df_test[df_test.isna()]
:
s1 s2
без строк.Как значения в моих ячейках могут быть допустимыми float64 и NaN одновременно, это довольно запутанно ...
UDPATE: Оказывается, NaN не были проблемой при запуске PCA, но на самом деле 2 бесконечных значения попали вмои данные, и я не обнаружил их в моем кадре данных 4096 x 15, пока не понял, что NaN обрабатывались правильно все время.Спасибо всем, что ответили!