【问题标题】:How can I partially read a huge CSV file?如何部分读取巨大的 CSV 文件?
【发布时间】:2015-06-02 18:36:09
【问题描述】:

我有一个非常大的 csv 文件,因此我无法将它们全部读入内存。我只想阅读和处理其中的几行。所以我在 Pandas 中寻找一个可以处理这个任务的函数,基本的 python 可以很好地处理这个任务:

with open('abc.csv') as f:
    line = f.readline()
    # pass until it reaches a particular line number....

但是,如果我在 pandas 中这样做,我总是阅读第一行:

datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )

我正在寻找一些更简单的方法来处理熊猫中的这项任务。例如,如果我想读取从 1000 到 2000 的行。我怎样才能快速做到这一点?

我想使用 pandas,因为我想将数据读入数据框。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用chunksize:

    for df in pd.read_csv('matrix.txt',sep=',', header = None, chunksize=1):
        #do something
    

    要回答您的第二部分,请执行以下操作:

    df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000)
    

    这将跳过前 1000 行,然后只读取接下来的 1000 行,为您提供 1000-2000 行,不清楚您是否需要包含端点,但您可以摆弄数字以获得您想要的。

    【讨论】:

      【解决方案2】:

      除了 EdChums 的回答,我发现 nrows 参数很有用,它简单地定义了您要导入的行数。因此,您不会获得迭代器,而是可以只导入大小为nrows 的整个文件的一部分。它也适用于skiprows

      df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-30
        • 2021-05-29
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多