使用 csv 文件时无法将字符串转换为浮点数错误
Could not convert string to float error while using csv files
我正在尝试将我的 csv 文件的两个列加载到 python 中的一个数组中。但是我得到:
ValueError: could not convert string to float: ''.
我附上了已实现的代码片段和我试图存储在数组中的 csv 文件。
import csv
col1 = []
col2 = []
path = r'C:\Users\angel\OneDrive\Documents\CSV_FILES_NV_LAB11 x 30.csv'
with open(path, "r") as f_in:
reader = csv.reader(f_in)
next(reader) # skip headers
for line in reader:
col1.append(float(line[0]))
col2.append(float(line[1]))
print(col1)
print(col2)
CSV 文件中有哪些值?如果值无法转换为 float
s,您将得到 ValueError
。例如,如果您的 CSV 文件如下所示:
ColName,ColName2
abc,def
123,45.6
g,20
错误将在循环的第一次迭代中引发,因为 abc
无法转换为浮点数。但是,如果 CSV 文件中的所有值都是数字:
ColName, ColName2
1,2
123,45.6
100,20
不会出现错误。
如果您在 CSV 文件中有一些数值和一些非数值,您可以通过在循环中包含一个 try...except
块来省略包含非数值的行:
for line in reader:
try:
float_1, float_2 = float(line[0]), float(line[1])
# If either of the above conversions failed, the next two lines will not be reached
col1.append(float_1)
col2.append(float_2)
except ValueError:
continue # Move on to next line
也许您忘记添加 .split(',')
?现在,line[0]
和 line[1]
只取该行的第一个和第二个字符。
我正在尝试将我的 csv 文件的两个列加载到 python 中的一个数组中。但是我得到:
ValueError: could not convert string to float: ''.
我附上了已实现的代码片段和我试图存储在数组中的 csv 文件。
import csv
col1 = []
col2 = []
path = r'C:\Users\angel\OneDrive\Documents\CSV_FILES_NV_LAB11 x 30.csv'
with open(path, "r") as f_in:
reader = csv.reader(f_in)
next(reader) # skip headers
for line in reader:
col1.append(float(line[0]))
col2.append(float(line[1]))
print(col1)
print(col2)
CSV 文件中有哪些值?如果值无法转换为 float
s,您将得到 ValueError
。例如,如果您的 CSV 文件如下所示:
ColName,ColName2
abc,def
123,45.6
g,20
错误将在循环的第一次迭代中引发,因为 abc
无法转换为浮点数。但是,如果 CSV 文件中的所有值都是数字:
ColName, ColName2
1,2
123,45.6
100,20
不会出现错误。
如果您在 CSV 文件中有一些数值和一些非数值,您可以通过在循环中包含一个 try...except
块来省略包含非数值的行:
for line in reader:
try:
float_1, float_2 = float(line[0]), float(line[1])
# If either of the above conversions failed, the next two lines will not be reached
col1.append(float_1)
col2.append(float_2)
except ValueError:
continue # Move on to next line
也许您忘记添加 .split(',')
?现在,line[0]
和 line[1]
只取该行的第一个和第二个字符。