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

Phi*_*ats 9 python pandas dask

如何将生成的dask.DataFrame转换为pandas.DataFrame(假设我完成了繁重的工作,并且只想将sklearn应用于我的聚合结果)?

MRo*_*lin 25

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

df = df.compute()
Run Code Online (Sandbox Code Playgroud)

  • 是否可以将其重命名为更直观的名称,例如“ to_pandas()”? (2认同)
  • 可能不是,不是。`.compute()` 在所有 dask 集合中是非常标准的。 (2认同)

Pow*_*ers 5

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 亿行数据集过滤到 10,000 行,那么您可能只需切换到 Pandas API 即可。