给定一个熊猫df
,可以通过以下方式在做任何事情之前复制它:
df.copy()
如何使用 dask 数据框对象执行此操作?
dask.dataframe 对象的突变很少见,因此很少需要。
话虽如此,您可以安全地复制对象
from copy import copy
df2 = copy(df)
没有 dask.dataframe 操作会改变数据帧的任何字段,所以这就足够了。
Dask 创建惰性计算的内部管道。您的数据框的每个版本都是另一层计算,直到以后才计算。
您可以通过像@MRocklin 建议的那样复制它来从这些计算中分支,然后您正在处理一个全新的计算堆栈,或者您可以通过执行以下操作继续在同一个堆栈上:
df = df[df.columns]
您可能希望拥有两个版本的数据,一个在突变之后。copy
您可以使用一种关于 dask 数据帧的方法;它可能与 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
将其写入文件并再次读取:
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)