懒惰地从生成器创建dask数据帧

时间:2016-09-30 13:39:34

标签: python pandas dask

我想懒洋洋地从生成器创建一个Dask数据帧,它看起来像:

12 321 12 12

parser.read和repo.download_files都返回生成器(使用yield)。 parser.read产生一个键值对的字典,如果我只是使用普通的pandas,它会将每个字典收集到一个列表中,然后使用:

[parser.read(local_file_name) for local_file_name in repo.download_files())]

从中创建dask数据帧的最佳方法是什么?原因是:a)我不知道返回的结果数量,以及b)我不知道将部署的机器的内存分配。

或者我应该做些什么不同的事情(例如,可能会创建一堆数据帧,然后将它们放入dask中?)

感谢。

1 个答案:

答案 0 :(得分:3)

如果您想使用单机Dask调度程序,那么您需要知道必须开始的文件数量。这可能类似于以下内容:

filenames = repo.download_files()
dataframes = [delayed(load)(filename) for filename in filenames]
df = dd.from_delayed(dataframes)

如果你使用distributed scheduler,你可以动态添加新的计算,但这有点先进。