在Pandas/Python中进行分块,处理和合并数据集

Che*_*.aa 3 python merge dataset chunking pandas

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

widths = [3, 7, ..., 9, 7]
tp = pandas.read_fwf(file, widths=widths, header=None)
Run Code Online (Sandbox Code Playgroud)

它可以帮助我标记数据,但系统崩溃(使用nrows = 20000).然后我决定用chunk(例如20000行)来做,像这样:

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

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

unu*_*tbu 5

我将假设自从阅读整个文件

tp = pandas.read_fwf(file, widths=widths, header=None)
Run Code Online (Sandbox Code Playgroud)

失败,但读取块工作,文件太大,无法立即读取,并且您遇到了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')
Run Code Online (Sandbox Code Playgroud)

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