鉴于pandas df
可以通过以下方式复制它:
df.copy()
如何使用dask dataframe对象执行此操作?
答案 0 :(得分:6)
dask.dataframe对象的变异很少,因此很少需要。
话虽如此,你可以安全地复制对象
from copy import copy
df2 = copy(df)
没有dask.dataframe操作会改变数据框的任何字段,所以这就足够了。
答案 1 :(得分:0)
Dask创建了惰性计算的内部管道。数据框的每个版本都是另一层计算,直到稍后才进行计算。
您可以通过复制这些计算来进行分支,如@MRocklin所建议的那样进行复制,然后使用全新的计算堆栈,或者可以执行以下操作在同一堆栈上继续操作:
df = df[df.columns]
答案 2 :(得分:0)
您可能希望拥有两个版本的数据,一个是在突变之后。您可以使用 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
答案 3 :(得分:-1)
将其写入文件并再次阅读:
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)