如何解决如何修复“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) 是节点的坐标。
你能给我一些解决这个问题的想法吗?
如果有任何建议,不胜感激。
解决方法
我假设您正在尝试将整个字符串“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/
,'361.51,1100.77' 实际上是两个数字吧?纬度 (361.51) 和经度 (1100.77)。您首先需要将其拆分为两个字符串。这是一种方法:
data = pd.DataFrame(data=[[0,"138.22,1549.64",28.92]],columns=["Timestamp","coordinate","flow"])
data["latitude"] = data["coordinate"].apply(lambda x: float(x.split(",")[0]))
data["longitude"] = data["coordinate"].apply(lambda x: float(x.split(",")[1]))
这将为您的数据框中提供两个新列,每个列都带有字符串中值的浮点数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。