达阵数据框:合并时出现内存错误

Pra*_*ash 5 python dask

我正在处理一些github用户数据,并试图创建同一城市中所有人的图表。为此,我需要在dask中使用合并操作。不幸的是,github用户群的大小是6M,似乎合并操作正在导致结果数据帧爆炸。我用下面的代码

import dask.dataframe as dd
gh = dd.read_hdf('data/github.hd5', '/github', chunksize=5000, columns=['id', 'city']).dropna()
st = dd.read_hdf('data/github.hd5', '/github', chunksize=5000, columns=['id', 'city']).dropna()
mrg = gh.merge(st, on='city').drop('city', axis=1)
mrg['max'] = mrg.max(axis=1)
mrg['min'] = mrg.min(axis=1)
mrg.to_castra('github')
Run Code Online (Sandbox Code Playgroud)

我可以使用此代码合并其他条件,例如名称/用户名,但尝试运行上述代码时出现MemoryError。

我尝试使用同步/多处理和线程调度程序来运行它。

我正在尝试在配备8GB RAM的Dell Laptop i7 4core上执行此操作。不应该以分块的方式熟悉此操作,还是我弄错了?使用pandas dataframe迭代器编写代码是唯一的出路吗?

pav*_*aes 1

不再支持 Castra,因此建议使用 HDF。从评论来看,使用写入多个文件to_hdf()解决了内存错误:

mrg.to_hdf('github-*.hdf')

相关文档:https://docs.dask.org/en/latest/ generated/dask.dataframe.DataFrame.to_hdf.html