【问题标题】:how to read only a chunk of csv file fast?如何快速读取一大块 csv 文件?
【发布时间】:2018-11-01 13:19:36
【问题描述】:

我正在使用this answer 来了解如何使用pandas 仅读取一大段 CSV 文件。

使用pd.read_csv('./input/test.csv' , iterator=True, chunksize=1000) 的建议效果很好,但它返回一个<class 'pandas.io.parsers.TextFileReader'>,所以我使用pd.concat(pd.read_csv('./input/test.csv' , iterator=True, chunksize=25)) 将其转换为数据帧,但这与首先读取文件所花费的时间一样多!

关于如何快速读取文件的一部分有什么建议吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    pd.read_csv('./input/test.csv', iterator=True, chunksize=1000) 返回一个迭代器。可以使用next函数抓取下一个

    reader = pd.read_csv('./input/test.csv', iterator=True, chunksize=1000)
    
    next(reader)
    

    这通常在 for 循环中用于一次处理一个块。

    for df in pd.read_csv('./input/test.csv', iterator=True, chunksize=1000):
        pass 
    

    【讨论】:

    • 尝试使用pd.concat 将迭代器转换为数据帧,强制它读取整个文件?
    • 是的。它还强调您可以将迭代器传递给pd.concat,这很容易知道。在迭代器上使用next 会将读数限制为一次一个卡盘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    相关资源
    最近更新 更多