如何修复 pandas:无法将字符串转换为浮点数
使用 pandas 时可能遇到的一个常见错误是:
ValueError : could not convert string to float: '$400.42'
当您尝试将字符串转换为 pandas 中的浮点型且该字符串包含以下一项或多项时,通常会发生此错误:
- 空间
- 逗号
- 特殊字符
发生这种情况时,必须先从字符串中删除这些字符,然后再将其转换为浮点数。
以下示例展示了如何在实践中解决此错误。
如何重现错误
假设我们有以下 pandas DataFrame:
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”不可调用
如何修复:类型错误:预期字符串或字节对象