分块加工&在Pandas / Python中合并数据集

时间:2015-04-27 23:36:27

标签: python pandas merge dataset chunking

有一个包含字符串的大型数据集。 我只是想通过read_fwf使用宽度打开它,如下所示:

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

这对mark the data有帮助, 但系统崩溃(使用nrows = 20000)。然后我决定用块(例如20000行)来完成它,就像这样:

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

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

1 个答案:

答案 0 :(得分:5)

我会假设读取整个文件

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调用将附加到同一文件中。