首页 > 解决方案 > 如何修复“ValueError:无法将字符串转换为浮点数”

问题描述

我将根据我拥有的 x 数据帧和 y 系列训练一个 SVM。X数据框如下所示:

X:

Timestamp      Location of sensors       Pressure or Flow values

0.00000         138.22, 1549.64            28.92

0.08333         138.22, 1549.64            28.94

0.16667         138.22, 1549.64            28.96

在 X 数据框中,传感器的位置以节点坐标的形式表示。Y系列如下图:

是:

0
0
0

但是当我将 svm 拟合到训练集时,它返回了 ValueError:could not convert string to float: '361.51,1100.77' 并且 (361.51, 1100.77) 是节点的坐标。你能给我一些想法来解决这个问题吗?如果有任何建议,非常感谢。

标签: pythondataframesvm

解决方案


我假设您正在尝试将整个字符串“361.51,1100.77”转换为浮点数,您可以看到为什么这是一个问题,因为 Python 看到两个小数点和一个逗号,所以它不知道该怎么做。假设您希望数字分开,您可以执行以下操作:

myStr = "361.51,1100.77"
x = float(myStr[0:myStr.index(",")])
y = float(myStr[myStr.index(",")+1:])
print(x)
print(y)

这会给你一个输出

361.51
1100.77

将 x 指定为myStr[0:myStr.index(",")]从 1 到第一次出现逗号的原始字符串的子字符串,得到第一个数字。

将 y 分配为myStr[myStr.index(",")+1:]从第一个逗号开始到字符串末尾的原始字符串的子字符串,得到第二个数字。

两者都可以使用该方法轻松地从此处转换为浮点数,从而为float(myStr)您提供两个单独的浮点数。

这是了解字符串切片的有用链接:https ://www.geeksforgeeks.org/string-slicing-in-python/


推荐阅读