ValueError:无法将字符串转换为浮点数

时间:2020-09-27 15:32:57

标签: python string

我正在处理csv文件,并且数字很小,并且将其转换为字符串,当我尝试将其转换为浮点数时,出现以下错误:

ValueError: could not convert string to float: '"1.0000000000000000E-02"'

代码如下:

x = float(df['frequency'].iloc[0])

我不知道为什么我认为E在这里不仅表示字符串,还表示解决方案?

2 个答案:

答案 0 :(得分:1)

我认为您出现 ValueError 的原因是由于字符串中包含多个引号。但是,如果您的数据以这种形式返回字符串,则最好的转换方法将包括一些字符串处理,然后使用float()函数。

您可以使用eval()函数来获取该信息:

a=eval('"1.0000000000000000E-02"')
float(a)

所以您的代码应类似于:

x=float(eval(df['frequency'].iloc[0]))

答案 1 :(得分:0)

使用"1.0000000000000000E-02"而不是'"1.0000000000000000E-02"'。 在您的情况下,您存储的字符串是"作为字符。显然"没有整数表示,因此您从python解释器收到错误。

很难看到错误而没有看到csv,但是很可能您会在csv中将这些数字写为"1.000E-12"并将它们读为str使得它们'"1.000E-12"'将{{ 1}}作为字符。您可以执行"删除df['frequency'].apply(lambda x:x[1:-1])

或者也可以使用"Stackoverflow post

或者也可以使用pandas.read_csv(data, quotechar='"') 参见文档Read Csv Docs

pandas.read_csv(data, doublequote=True)