我想从生成器中懒惰地创建一个 Dask 数据框,它看起来像这样:
[parser.read(local_file_name) for local_file_name in repo.download_files())]
parser.read 和 repo.download_files 都返回生成器(使用 yield)。 parser.read 生成一个键值对字典,它(如果我只是使用普通 Pandas )会将每个字典收集到一个列表中,然后使用:
df = pd.DataFrame(parsed_rows)
从中创建 dask 数据框的最佳方法是什么?原因是 a) 我不一定知道返回结果的数量,以及 b) 我不知道将要部署的机器的内存分配情况。
或者,我应该做些什么不同的事情(例如,也许创建一堆数据框,然后将它们放入 dask 中?)
谢谢。
最佳答案
如果你想使用单机 Dask 调度程序,那么你需要知道你必须从多少文件开始。这可能类似于以下内容:
filenames = repo.download_files()
dataframes = [delayed(load)(filename) for filename in filenames]
df = dd.from_delayed(dataframes)
如果您使用 distributed scheduler您可以即时添加新的计算,但这有点高级。
关于python - 从生成器懒惰地创建 dask 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792928/