有一个大数据集,包含一个字符串。 我只想使用宽度通过 read_fwf 打开它,如下所示:
widths = [3, 7, ..., 9, 7]
tp = pandas.read_fwf(file, widths=widths, header=None)
它会帮助我 mark the data , 但系统崩溃(适用于 nrows=20000)。然后我决定按 block (例如 20000 行)来做,就像这样:
cs = 20000
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
...: <some code using chunk>
我的问题是:在对 block 进行一些处理(标记行、删除或修改列)后,我应该在循环中做什么以合并(连接?) block 回到 .csv 文件中?还是有别的办法?
最佳答案
我会假设,因为阅读了整个文件
tp = pandas.read_fwf(file, widths=widths, header=None)
失败但分块读取有效,文件太大无法一次读取并且您遇到了 MemoryError。
在那种情况下,如果您可以分块处理数据,然后将结果连接到 CSV 中,您可以使用 chunk.to_csv
将 CSV 写入 block :
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
调用附加到同一文件。
关于python - Pandas/Python 中的分块、处理和合并数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907788/