如何将Dask.DataFrame转换为pd.DataFrame?

How to transform Dask.DataFrame to pd.DataFrame?

如何将结果 dask.DataFrame 转换为 pandas.DataFrame(假设我已经完成了繁重的工作,只想将 sklearn 应用于我的汇总结果)?

您可以调用 .compute() 方法将 dask.dataframe 转换为 pandas 数据帧:

df = df.compute()
pd_df = pd.DataFrame(dsk_df)

给你。它比 dsk_df.compute().

MRocklin 的答案是正确的,这个答案提供了更多详细信息,说明何时适合从 Dask DataFrame 转换为 Pandas DataFrame(以及如何预测它何时会导致问题)。

Dask DataFrame 中的每个分区都是一个 Pandas DataFrame。 运行 df.compute() 会将 Dask DataFrame 中的所有底层分区合并为一个 Pandas DataFrame。如果 Pandas DataFrame 的大小大于您机器上的 RAM,那将导致问题。

如果 df 有 30 GB 的数据,而您的计算机有 16 GB 的 RAM,那么 df.compute() 会因内存错误而崩溃。如果 df 只有 1 GB 的数据,那你就没事了。

您可以 运行 df.memory_usage(deep=True).sum() 计算您的 DataFrame 使用的内存量。这会让您知道您的 DataFrame 是否小到可以合并成一个 Pandas DataFrame。

重新分区会改变 Dask DataFrame 中底层分区的数量。 df.repartition(1).partitions[0] 在概念上类似于 df.compute()

转换为 Pandas DataFrame 在执行大过滤操作后尤其可能。如果您将 1000 亿行数据集过滤到 1 万行,那么您可能只需切换到 Pandas API.