有一个包含字符串的大型数据集。 我只是想通过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文件中?还是有另一种方式?
答案 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
调用将附加到同一文件中。