我使用read_csv()读取csv文件的长列表,并返回两个数据文件。我已经设法用达斯克加速了这一行动。不幸的是,在使用dask时,我无法返回多个变量。
下面的最低工作示例复制了我的问题:
@delayed(nout = 2)
def function(a):
d = 0
c = a + a
if a>4: # random condition to make c and d of different lenghts
d = a * a
return pd.DataFrame([c])#, pd.DataFrame([d])
list = [1,2,3,4,5]
dfs = [delayed(function)(int) for int in list]
ddf = dd.from_delayed(dfs)
ddf.compute()任何解决这一问题的想法都将受到赞赏。谢谢。
发布于 2022-04-01 17:32:34
delayed装饰器具有nout参数,因此类似的内容可能会工作:
from dask import delayed
@delayed(nout=2)
def function(a,b):
c = a + b
d = a * b
return c, d
delayed_c, delayed_d = function(2, 3)从这个问题上看,还不清楚在哪一步输入数据格式,但是问题的关键部分(从dask延迟返回多个值)是通过使用nout回答的,有关详细信息,请参阅this answer。
更新:
更新问题中的延迟函数返回一个数据元组,这意味着应该在元组的每个元素上调用dd.from_delayed,或者应该解压元组:
dfs = [delayed_value for int in list for delayed_value in function(int)]
ddf = dd.from_delayed(dfs)
ddf.compute()https://stackoverflow.com/questions/71710470
复制相似问题