我有这样的csv文件:
string, 3.54545,4.3434,3.34435543
string, 4.54545,67.3434,5.34435543
...
stringN, 5.54545,1.3434,9.34435543
如何使用csv模块在两个不同的列表中提取第一个(字符串)和第二个列(浮点数)?。例如,我希望得到这样的结果:
list1 = [string,string,...,string]
list2 = [3.54545,4.54545,..,5.54545]
其中list1
是字符串列表,list2
是浮点列表。我用pandas尝试了以下内容,问题是需要大量读取文件:
df = pd.read_csv('test_dict.csv', header = None)
list1 = df[0].values.tolist()
list2 = df[1].values.tolist()
先谢谢你,伙计们!
答案 0 :(得分:2)
如果你想要前两列你可以压缩:
import csv
with open("in.csv") as f:
reader = csv.reader(f)
zipped = zip(*reader)
s, f = list(next(zipped)), list(map(float, next(zipped)))
对于python 2,请使用itertools.izip:
import csv
from itertools import izip
with open("in.csv") as f:
reader = csv.reader(f)
zipped = izip(*reader)
s, f = list(next(zipped)), map(float, next(zipped))
print(s, f)
(['string', 'string', 'stringN'], [3.54545, 4.54545, 5.54545])
答案 1 :(得分:2)
你可以像这样使用csv模块,但正如我在评论中所说,不要指望它比使用pandas更快。
import csv
col1 = []
col2 = []
with open('test_dict.csv') as f:
for row in csv.reader(f):
col1.append(row[0])
col2.append(row[1])