用于读取大型 CSV 文件的 Python 生成器

标签 python csv numpy bigdata

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

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

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

另外,不幸的是,在这种情况下 Pandas 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 文件的 Python 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584494/

相关文章:

python - python中3d数组的最大值

python 检查字符串是否为空 - 这是优雅的方式吗

python - 在模型定义中过滤相关模型的问题

java - 使用 aws athena 解析 CSV

python - 如何修改 CSV 文件中的数据并更改行和列?

python - 有没有办法用 numpy 有效地反转矩阵数组?

python - 当文本略有不同时替换列名称

Python Pandas Dataframe - 每两周计算值的总和

java - 打开导出的 CSV 文件时,Excel 不显示小数点零

arrays - 来自一个或多个 numpy 数组的多边形角