Как исправить в 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» не может быть вызван
Как исправить: Ошибка типа: ожидаемый строковый или байтовый объект

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *