Одна распространенная ошибка, с которой вы можете столкнуться при использовании pandas:
ValueError : could not convert string to float: '$400.42'
Эта ошибка обычно возникает, когда вы пытаетесь преобразовать строку в число с плавающей запятой в pandas, но строка содержит одно или несколько из следующих:
- Пространства
- Запятые
- Специальные символы
Когда это происходит, вы должны сначала удалить эти символы из строки, прежде чем преобразовывать ее в число с плавающей запятой.
В следующем примере показано, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
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
#3 D $194.22
#view data type of each column
print(df.dtypes )
#store object
#revenue object
#dtype: object**
Теперь предположим, что мы пытаемся преобразовать столбец revenue из строки в число с плавающей запятой:
#attempt to convert 'revenue' from string to float
df['revenue'] = df['revenue'].astype (float)
ValueError : could not convert string to float: '$400.42'
Мы получаем ошибку, так как столбец revenue содержит в строках знак доллара.
Как исправить ошибку
Способ устранения этой ошибки заключается в использовании функции replace() для замены знаков доллара в столбце revenue ничем перед выполнением преобразования:
#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 A 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
#revenue float64
#dtype: object
Обратите внимание, что мы можем преобразовать столбец дохода из строки в число с плавающей запятой, и мы не получаем никаких ошибок, поскольку перед выполнением преобразования мы удалили знаки доллара.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить в Python: объект 'numpy.ndarray' не вызывается
Как исправить: TypeError: объект 'numpy.float64' не вызывается
Как исправить: ошибка типа: ожидаемая строка или байтовый объект