python - 从生成器懒惰地创建 dask 数据框

标签 python pandas dask

我想从生成器中懒惰地创建一个 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/

相关文章:

python - 如何使用 RedHat Enterprise Linux 上的软件集合调用 python 3 cgi 脚本?

python - 广播用于逐元素乘法的 3d 数组

python Pandas : banal apply statements incredibly slow

python-2.7 - 从 dask 读取的并行 excel 表

python - PyQt4 无法创建简单的 GUI 应用程序

python - python 上的生成树

python - Pandas 的 DataFrame 合并意外值

python - `str` 中的 `object` 和 `pandas.read_csv` 数据类型有什么区别?

python - Dask - 警告 - Worker 超出了 95% 内存预算

python - Parquet 与 Dask/Pandas 和 Pyspark 的兼容性