我正在从看起来像所附图片的csv文件中导入数字: CSV File View
但是,这些数字是作为字符串而不是浮点数导入的,因此我需要进行转换。我试过使用这种方法,但它只是说它不能转换。
import csv
import numpy as np
with open('20191031-0002_09.csv', mode='r') as infile:
reader = csv.reader(infile)
next(reader, None)
next(reader, None)
next(reader, None)
y = [columns[1] for columns in reader]
通过对堆栈的研究,我发现这可能行得通:
numbers = []
for x in y:
numbers.extend([n for n in map(float, line.split(' '))])
但是,我的数组仍然是这样的字符串列表:
['1.09805600', '1.09805600']
我希望它是一个浮点数数组。
希望您能提供帮助。
答案 0 :(得分:0)
这很令人困惑,如上所述,您尚未在任何地方声明line
,但是如果要将字符串'1.09805600'
转换为浮点数,只需将其称为浮点数即可。
>>> x = '1.09805600'
>>> float(x)
1.09805600
答案 1 :(得分:0)
请尝试以下操作:
import csv
import numpy as np
with open('20191031-0002_09.csv', mode='r') as infile:
reader = csv.reader(infile)
y = [columns[1] for columns in reader]
print (y)
numbers = []
numbers.extend([n for n in map(float,y)])
print (numbers)
如果它不起作用,请在给定的演示链接中添加示例csv
文件
答案 2 :(得分:0)
如果您想将和列都转换为浮点型,以便最终得到一个类似于以下内容的列表:
[
[0, 1.098056],
[.000002, 1.098056],
etc.
]
然后这样做:
import csv
with open('20191031-0002_09.csv', mode='r') as infile:
reader = csv.reader(infile)
next(reader, None)
next(reader, None)
next(reader, None)
rows = [[float(columns[0]), float(columns[1])] for columns in reader]
如果您只关心第二列:
y = [float(columns[1]) for columns in reader]
已编辑以处理具有错误值的列:
import csv, sys
with open('20191031-0002_09.csv', mode='r') as infile:
reader = csv.reader(infile)
next(reader, None)
next(reader, None)
next(reader, None)
y = []
for columns in reader:
try:
y.append(float(columns[1]))
except ValueError:
print(f"Unable to convert '{columns[1]}'", file=sys.stderr)
# uncomment out the next line if you want to substitute 0.0
# y.append(0.0)