Python生成器读取大型CSV文件
问题描述:
我需要编写一个Python生成器,生成来自两个不同CSV文件的元组(X,Y)。Python生成器读取大型CSV文件
它应该在init中接收批量大小,从两个CSV中逐行读取行,为每行产生一个元组(X,Y),其中X和Y是数组(CSV文件的列)。
我看懒读书的例子,但我发现很难将它们转换为CSV格式:
- Lazy Method for Reading Big File in Python?
- Read large text files in Python, line by line without loading it in to memory
而且,不幸的是熊猫Dataframes不在这种情况下是一个选项。
我可以从哪里开始?
感谢
答
你可以有一台发电机,读取从两个不同的CSV读者线,并产生自己的行作为对阵列。代码为:
import csv
import numpy as np
def getData(filename1, filename2):
with open(filename1, "rb") as csv1, open(filename2, "rb") as csv2:
reader1 = csv.reader(csv1)
reader2 = csv.reader(csv2)
for row1, row2 in zip(reader1, reader2):
yield (np.array(row1, dtype=np.float),
np.array(row2, dtype=np.float))
# This will give arrays of floats, for other types change dtype
for tup in getData("file1", "file2"):
print(tup)
我理解你的意思吗,你想要一个能产生不同CSV文件的行对的生成器吗? – jotasi
你试过了什么?上市要求是不够的。此外,更明确你的情况。 X和y是两个csv文件的列吗? X是大写还是y是小写? – mhoff
我已经添加了对我尝试过的解决方案的引用,并将y更正为Y(X和Y都是浮点数组)。 –