如何复制 dask 数据框?

Howto copy a dask dataframe?

给定一个 pandas df 可以在做任何事情之前复制它:

df.copy()

如何使用 dask 数据框对象执行此操作?

dask.dataframe 对象的突变很少见,因此很少需要这样做。

也就是说,您可以安全地复制对象

from copy import copy
df2 = copy(df)

没有 dask.dataframe 操作会改变数据帧的任何字段,所以这就足够了。

写入文件再读取:

import os
import dask.dataframe as dd

df = <Initial Dask Dataframe to be copied>
file = 'sample.csv'
df.to_csv(file)
df2 = df.read_csv(file)
os.remove(file)

Dask 创建惰性计算的内部管道。您的数据框的每个版本都是另一层计算,直到后来才计算。

您可以通过像@MRocklin 建议的那样复制它来从这些计算中分支出来,然后您正在处理一个全新的计算堆栈,或者您可以通过执行以下操作在同一堆栈上继续:

df = df[df.columns]

您可能希望拥有两个版本的数据,一个在突变之后。您可以使用 dask 数据帧上的 copy 方法;它可能与 python 的 copy.copy 相同,但如果(对我而言)使用库维护者的版本更安全。

import dask.dataframe as dd
ddf = dd.from_pandas(pd.DataFrame({'z': [1, 2]}), npartitions=1)
ddf2 = ddf.copy()
ddf2['z'] -= 10

print(ddf.compute())
print()
print(ddf2.compute())
   z
0  1
1  2

   z
0 -9
1 -8