Pandas/Python 中的分块、处理和合并数据集

Chunking, processing & merging dataset in Pandas/Python

有一个大数据集,包含一个字符串。 我只想通过 read_fwf 使用宽度打开它,像这样:

widths = [3, 7, ..., 9, 7]
tp = pandas.read_fwf(file, widths=widths, header=None)

它会帮助我, 但系统崩溃(适用于 nrows=20000)。然后我决定按块(例如 20000 行)来做,像这样:

cs = 20000
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
...:  <some code using chunk>

我的问题是:在对块进行一些处理(标记行、删除或修改列)后,我应该在循环中做什么以合并(连接?)块回到 .csv 文件中?还是有别的办法?

我假设自从阅读了整个文件后

tp = pandas.read_fwf(file, widths=widths, header=None)

失败但分块读取有效,文件太大无法一次读取并且您遇到了 MemoryError。

在这种情况下,如果您可以分块处理数据,然后连接 CSV 中的结果,您可以使用chunk.to_csv 将CSV 写入块:

filename = ...
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
    # process the chunk
    chunk.to_csv(filename, mode='a')

注意mode='a'以附加模式打开文件,这样每个文件的输出 chunk.to_csv 调用附加到同一个文件。