【问题标题】:How to use dask to populate DataFrame in parallelized task?如何使用 dask 在并行化任务中填充 DataFrame?
【发布时间】:2018-11-16 07:58:55
【问题描述】:
我想使用 dask 来并行化一个数字运算任务。
此任务仅使用我计算机中的一个内核。
作为该任务的结果,我想通过 shared_df.loc[len(shared_df)] = [x, 'y'] 向 DataFrame 添加一个条目。这个 DataFrame 应该由我的计算机中的所有(四个)并行工作程序/线程填充。
我必须如何设置 dask 才能执行此操作?
【问题讨论】:
-
在我看来,这与您在此 comment 上提出的问题相同,请查看我的评论以获取玩具示例。否则,请为此特定问题分享mcve。我不清楚[x, 'y'] 是什么。
标签:
python
pandas
python-multiprocessing
python-multithreading
dask
【解决方案1】:
做这样的事情的正确方法,粗略:
创建一个函数,对于给定的参数,返回总数据的某些部分的数据帧
将此函数包装在dask.delayed 中,为每个输入参数创建一个调用列表,并使用dd.from_delayed 创建一个dask-dataframe
如果您确实需要对索引进行排序,并且索引与您在上一步中应用的分块不同的行进行分区,您可能需要执行set_index
请阅读每个步骤的文档字符串和示例!