我正在处理csv文件,并且数字很小,并且将其转换为字符串,当我尝试将其转换为浮点数时,出现以下错误:
ValueError: could not convert string to float: '"1.0000000000000000E-02"'
代码如下:
x = float(df['frequency'].iloc[0])
我不知道为什么我认为E在这里不仅表示字符串,还表示解决方案?
答案 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)