如何修复 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”不可调用
如何修复:类型错误:预期字符串或字节对象

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注