【问题标题】:Is there a way to delete rows of a csv file after reading them? [duplicate]有没有办法在读取 csv 文件后删除它们的行? [复制]
【发布时间】:2021-11-21 05:13:49
【问题描述】:

我有一个巨大的数据集(大约 30 GB 大小),我需要将 CSV 分解为更小的 CSV 文件。使用skipRows 争论的传统方式似乎需要很多时间。我认为,如果在阅读了最初的rowSize 之后,这个过程可能会快得多;比如 1000,我们从 CSV 文件中删除这些行,因此在每次迭代之后,我们不必跳过这些行,这基本上是每次都读取这些行数。

有什么方法可以实现吗?

【问题讨论】:

标签: python pandas csv


【解决方案1】:

为了节省内存,最好分块读取大型 CSV 文件,而不是尝试一次加载整个文件。然后,每个块都可以舒适地放入内存中。这是使用read_csv()chunksize 参数完成的。

每个块都作为其自己的数据帧返回,然后可以根据需要将其写入单独的 CSV 文件。例如:

import pandas as pd

with pd.read_csv("large.csv", chunksize=1000) as reader:
    for chunk_number, df_chunk in enumerate(reader, start=1):
        print(chunk_number)
        df_chunk.to_csv(f"large_chunk{chunk_number:03}.csv", index=False)

这将创建多个名为 large_chunk001.csv 的输出 CSV 文件,依此类推。每个块将包含 1000 行(我建议使用更大的数字)。

这也会自动为每个输出 CSV 文件添加相同的标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2022-01-23
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多