Как исправить в pandas: невозможно преобразовать строку в число с плавающей точкой
Распространенная ошибка, с которой вы можете столкнуться при использовании панд:
ValueError : could not convert string to float: '$400.42'
Эта ошибка обычно возникает при попытке преобразовать строку в число с плавающей запятой в pandas, если строка содержит одно или несколько из следующих элементов:
- Пространства
- Запятые
- Специальные символы
В этом случае необходимо сначала удалить эти символы из строки, прежде чем преобразовать ее в число с плавающей запятой.
В следующем примере показано, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующий DataFrame pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'B', 'C', 'D'], ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']}) #view DataFrame print (df) store revenue 0 A $400.42 1 B $100.18 2 C $243.75 3D $194.22 #view data type of each column print ( df.dtypes ) store object revenue object dtype:object
Теперь предположим, что мы пытаемся преобразовать столбец дохода из строки в число с плавающей запятой:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
Мы получаем сообщение об ошибке, поскольку столбец дохода содержит в строках знак доллара.
Как исправить ошибку
Способ устранения этой ошибки — использовать функцию replace() для замены знаков доллара в столбце дохода ничем перед выполнением преобразования:
#convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))
#view updated DataFrame
print (df)
store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22
#view data type of each column
print ( df.dtypes )
store object
income float64
dtype:object
Обратите внимание, что мы можем преобразовать столбец дохода из строки в число с плавающей запятой, и мы не получаем никаких ошибок, поскольку перед преобразованием мы удалили знаки доллара.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить в Python: объект «numpy.ndarray» не подлежит вызову
Как исправить: Ошибка типа: объект «numpy.float64» не может быть вызван
Как исправить: Ошибка типа: ожидаемый строковый или байтовый объект