我能做些什么来防止同一个文件被读取两次以上?对于背景,我有以下详细信息我试图读取文件夹中的文件列表,对其进行转换,将其输出到文件中,并检查转换前后的间隙首先是阅读部分def load_file(file): df = pd.read_excel(file) return dffile_list = glob2.glob("folder path here")future_list = [delayed(load_file)(file) for file in file_list]read_result_dd = dd.from_delayed(future_list)之后,我将对数据进行一些转换:def transform(df): # do something to df return dftransformation_result = read_result_dd.map_partitions(lambda df: transform(df))我想实现两件事:首先获得转换输出:Outputfile = transformation_result.compute()Outputfile.to_csv("path and param here")第二个得到比较read_result_comp = read_result_dd.groupby("groupby param here")["result param here"].sum().reset_index()transformation_result_comp = transformation_result_dd.groupby("groupby param here")["result param here"].sum().reset_index()Checker = read_result_dd.merge(transformation_result, on=['header_list'], how='outer').compute()Checker.to_csv("path and param here")问题是如果我按顺序调用,即Outputfile:CheckerOutputfile = transformation_result.compute()Checker = read_result_dd.merge(transformation_result, on=['header_list'], how='outer').compute()Outputfile.to_csv("path and param here")Checker.to_csv("path and param here")它将读取整个文件两次(对于每个计算)有没有办法让读取结果只完成一次?还有什么办法可以让两者都compute()按顺序运行?(如果我分两行运行它,从 dask 仪表板我可以看到它将运行第一行,清除 dasboard,然后运行第二行,而不是同时运行两个)我无法运行.compute()结果文件,因为我的 ram 不能包含它,结果数据框太大。与原始数据相比,检查器和输出文件都小得多。
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
您可以dask.compute
在多个 Dask 集合上调用该函数
a, b = dask.compute(a, b)
https://docs.dask.org/en/latest/api.html#dask.compute
将来,我建议制作一个MCVE
添加回答
举报
0/150
提交
取消