【问题标题】:Python generator to read large CSV file用于读取大型 CSV 文件的 Python 生成器
【发布时间】:2016-11-29 18:48:47
【问题描述】:

我需要编写一个 Python 生成器来生成来自两个不同 CSV 文件的元组 (X, Y)。

它应该在 init 上接收批量大小,从两个 CSV 中逐行读取,为每一行生成一个元组 (X, Y),其中 X 和 Y 是数组(CSV 文件的列)。

我查看了懒惰阅读的示例,但我发现很难将它们转换为 CSV:

另外,不幸的是,在这种情况下,Pandas Dataframes 不是一个选项。

我可以从任何 sn-p 开始吗?

谢谢

【问题讨论】:

  • 我是否理解正确,您想要一个生成器从不同的 CSV 文件中生成成对的行?
  • 我添加了对我尝试过的解决方案的引用,并将 y 更正为 Y(X 和 Y 都是浮点数数组)。

标签: python csv numpy bigdata


【解决方案1】:

您可以有一个生成器,它从两个不同的 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)

【讨论】:

  • 感谢您的回答 - 我想知道如何产生多行 - 例如每个生成器 10 行
猜你喜欢
  • 2021-06-09
  • 2021-09-02
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2016-11-09
  • 2014-04-06
  • 1970-01-01
相关资源
最近更新 更多