Ошибка значения: не удалось преобразовать строку в float — без указания позиции

#python #csv

#python #csv

Вопрос:

Для текущего проекта я планирую запустить алгоритм scikit-learn Stochastic Graduent Booster над набором CSV, который включает числовые данные.

Однако при вызове строки sgbr.fit(X_train, y_train) скрипта я получаю ValueError: could not convert string to float: сообщение без дополнительной информации о соответствующей области, которая не может быть отформатирована.

Я предполагаю, что эта ошибка связана не с самим кодом Python, а скорее с вводом CSV. Однако я уже проверил файл CSV, чтобы подтвердить, что все разделы содержат исключительно числа с плавающей точкой:

введите описание изображения здесь

У кого-нибудь есть идея, почему ValueError появляется без дальнейшего указания положения?

Ответ №1:

Я думаю, что нет прямой функции для получения указания положения. вы можете попробовать это для преобразования

    print (df)
       column
    0  01
    1  02
    2  03
    3  04
    4  05
    5  LS

print (pd.to_numeric(df.column.str, errors='coerce'))
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
5    NaN
Name: column, dtype: float64
  

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

1. Спасибо за хороший ввод. Я попробовал этот подход, но получаю ошибку AttributeError: 'DataFrame' object has no attribute 'to_numeric' . Может ли проблема со строкой для float быть связана с тем фактом, что я использую fillna("") в коде?

2. На самом деле to_numeric не является атрибутом dataframe, но это атрибут пакета pandas. У вас должна быть функция с вводимым числовым значением и выводом другого числового значения (float), но вы указываете вместо числового значения фрейм данных

3. Понял, и вы правы — это решило проблему. Один быстрый последний момент: код выдает ошибку AttributeError: 'DataFrame' object has no attribute 'column' — что конкретно вы бы использовали для column приведения в соответствие с набором данных CSV?

4. Это столбцы, а не столбец

5. БигГ, у тебя все еще есть column , не columns . Также я не получаю серию с этим, а скорее массив из одного элемента. Ваш ответ привел к другой ошибке.