有没有办法在读取 csv 文件后删除它们的行? [复制]
Posted
技术标签:
【中文标题】有没有办法在读取 csv 文件后删除它们的行? [复制]【英文标题】:Is there a way to delete rows of a csv file after reading them? [duplicate] 【发布时间】:2021-11-21 05:13:49 【问题描述】:我有一个巨大的数据集(大约 30 GB 大小),我需要将 CSV 分解为更小的 CSV 文件。使用skipRows
争论的传统方式似乎需要很多时间。我认为,如果在阅读了最初的rowSize
之后,这个过程可能会快得多;比如 1000,我们从 CSV 文件中删除这些行,因此在每次迭代之后,我们不必跳过这些行,这基本上是每次都读取这些行数。
有什么方法可以实现吗?
【问题讨论】:
您正在寻找术语“块”。此外,您不需要从 csv 文件中删除行,但只需确保您没有读取内存中的整个文件。请参阅:***.com/questions/25962114/… 或 pandas.pydata.org/pandas-docs/stable/reference/api/…(搜索块大小) 您是否考虑过使用为此目的设计的tool? 【参考方案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_chunkchunk_number:03.csv", index=False)
这将创建多个名为 large_chunk001.csv
的输出 CSV 文件,依此类推。每个块将包含 1000 行(我建议使用更大的数字)。
这也会自动为每个输出 CSV 文件添加相同的标题。
【讨论】:
以上是关于有没有办法在读取 csv 文件后删除它们的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何删除错误行错误的行并使用 pandas 或 numpy 读取剩余的 csv 文件?
如何删除错误行错误的行并使用 pandas 或 numpy 读取剩余的 csv 文件?