首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dask返回多个数据帧

使用dask返回多个数据帧
EN

Stack Overflow用户
提问于 2022-04-01 17:00:44
回答 1查看 147关注 0票数 1

我使用read_csv()读取csv文件的长列表,并返回两个数据文件。我已经设法用达斯克加速了这一行动。不幸的是,在使用dask时,我无法返回多个变量。

下面的最低工作示例复制了我的问题:

代码语言:javascript
复制
@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()

任何解决这一问题的想法都将受到赞赏。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 17:32:34

delayed装饰器具有nout参数,因此类似的内容可能会工作:

代码语言:javascript
复制
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,或者应该解压元组:

代码语言:javascript
复制
dfs = [delayed_value for int in list for delayed_value in function(int)]
ddf = dd.from_delayed(dfs)
ddf.compute()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71710470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档