微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复“ValueError:无法将字符串转换为浮点数”

如何解决如何修复“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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?