ValueError: не удалось преобразовать строку в число с плавающей точкой: '' 20, 99 '' - PullRequest
0 голосов
/ 05 октября 2018

У меня есть фрейм данных, который выглядит следующим образом: 13000 строк

print(df)
           Date       Price   Nation
0    01/01/2018    -5.000,73  Spain
1    01/01/2018        15,60  Italy
3    01/01/2018        14,13  Italy
4    01/01/2018        12,53  Spain
5    01/01/2018        16,64  Italy
6    01/01/2018        22,48  Italy
7    01/01/2018        24,30  Italy
8    01/01/2018        24,88  Spain
9    01/01/2018        31,40  Italy
10   01/01/2018        18,74  Italy

Столбец цены равен non-null object Я удалил все пробелы и удалил все пустые строки, которые пытался работать толькос преобразованием ценового столбца из серии в строку

string=df['Price'].to_string()
print(string)
0        -5.000,73
1            15,60
3            14,13
4            12,53
5            16,64
6            22.48
7            24.30
8            24.88
9            31.40
10           18.74

Когда я попытался

string=string.strip('.')
string=string.replace(',','.')
float(string.strip().strip("'"))

Система вернула мне сообщение об ошибке:

ValueError: could not convert string to float: '0
-5.000.73\n1            15.60\n3            14.13\n4            12.53\n5            16.64\n6            22.48\n7            24.30\n8            24.88\n9            31.40\n10         

Данные загружаются из CSV, и разделитель равен ,

  1. Как я могу легко преобразовать в число с плавающей точкой, учитывая, что \ n7, \ n10, ..., \ n160000не постоянно увеличивается?
  2. Почему я получаю такую ​​проблему?
  3. Если я открываю свой CSV с помощью Jupyter или в Excel, я не вижу /n32, но только что-то вроде этого"01/01/2018","16,60","Spain", я знаю, что /n используется для задания вертикального пространства, но я не знаю, как с этим справиться, я заметил, что это связано с индексом

Я читал этовопросы, пробовал другие решения, но никто не решил мою проблему:

numpy.loadtxt, ValueError: не удалось преобразовать строку в число с плавающей точкой

ValueError: не удалось преобразоватьstring to float: '-0,274697 \ n'

Как мне разобрать строку в float или int в Python?

Python преобразовать строку в число с плавающей точкой

Python.ValueError не удалось преобразовать строку в число с плавающей точкой:

ValueError: не удалось преобразовать строку в число с плавающей точкой в ​​Pyspark

1 Ответ

0 голосов
/ 05 октября 2018

strip() удаляет только начальные и конечные символы.Вы можете достичь этого, используя вместо этого replace():

string = "-5.000,73"
string = string.replace('.', '')
string = string.replace(',', '.')
# float(string.strip().strip("'"))
float(string)

string.strip (s [, chars])

Возврат копии строки с начальными и конечными символамиудален.Если символы не указаны или отсутствуют, пробельные символы удаляются.Если задано, а не None, символы должны быть строкой;символы в строке будут удалены с обоих концов строки, для которой вызывается этот метод.

Более подробную информацию можно найти здесь

Кроме того,Я не уверен, почему вы пытаетесь удалить апостроф, но синтаксис для этого должен быть string.replace(''', '');Я бы подождал, пока вы закончите разбор символов, чтобы преобразовать его тоже в число с плавающей запятой, используя float().

В дополнение к этому вы можете использовать операторы print в своем коде, чтобы увидеть, что происходит не так.Как только я вставил ваш оригинальный код.Было очевидно, что первый период не удаляется из строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...