首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中拆分大文件csv文件(7 7GB

如何在Python中拆分大文件csv文件(7 7GB
EN

Stack Overflow用户
提问于 2013-11-18 01:31:40
回答 9查看 31.4K关注 0票数 24

我有一个7 7GB的csv文件,我想把它分成更小的块,这样在笔记本上用Python语言进行分析时,它的可读性和速度更快。我想从它中获取一个小的设置,可能是250MB,那么我该怎么做呢?

EN

回答 9

Stack Overflow用户

发布于 2013-11-18 01:48:30

您不需要Python来拆分csv文件。使用您的shell:

代码语言:javascript
复制
$ split -l 100 data.csv

会将data.csv分成100行的块。

票数 40
EN

Stack Overflow用户

发布于 2016-04-15 18:17:56

我不得不做一个类似的任务,并使用了pandas包:

代码语言:javascript
复制
for i,chunk in enumerate(pd.read_csv('bigfile.csv', chunksize=500000)):
    chunk.to_csv('chunk{}.csv'.format(i), index=False)
票数 28
EN

Stack Overflow用户

发布于 2021-04-14 20:45:18

这是一个小的python脚本,我用它将一个文件data.csv拆分为几个CSV部分文件。可以使用chunk_size (每个零件文件的行数)控制零件文件的数量。

原始文件的标题行(列名)将复制到每个零件CSV文件中。

它适用于大文件,因为它使用readline()一次读取一行,而不是一次将整个文件加载到内存中。

代码语言:javascript
复制
#!/usr/bin/env python3

def main():
    chunk_size = 9998  # lines

    def write_chunk(part, lines):
        with open('data_part_'+ str(part) +'.csv', 'w') as f_out:
            f_out.write(header)
            f_out.writelines(lines)

    with open('data.csv', 'r') as f:
        count = 0
        header = f.readline()
        lines = []
        for line in f:
            count += 1
            lines.append(line)
            if count % chunk_size == 0:
                write_chunk(count // chunk_size, lines)
                lines = []
        # write remainder
        if len(lines) > 0:
            write_chunk((count // chunk_size) + 1, lines)

if __name__ == '__main__':
    main()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20033861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档