首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列表指定为Dask-Dataframe列

将列表指定为Dask-Dataframe列
EN

Stack Overflow用户
提问于 2021-08-16 01:49:43
回答 1查看 581关注 0票数 1

我有一个dask-dataframe,并使用一些列来处理熊猫date_range进程,它将创建如下列表:

代码语言:javascript
复制
list=[[2005/01/01,2005/01/02,2005/01/03],[2005/05/01,2005/05/02],[2005/06/01,2005/06/02,2005/06/03]]

在那之后,我想像熊猫一样,把列表分配到列中:

dd‘’time‘=列表

但是它返回错误。

‘列赋值不支持类型列表’

有什么解决办法吗?

最后一列应该类似于

代码语言:javascript
复制
time
[2005/01/01,2005/01/02,2005/01/03]
[2005/05/01,2005/05/02]
[2005/06/01,2005/06/02,2005/06/03]
EN

回答 1

Stack Overflow用户

发布于 2021-08-17 12:35:49

将一个list分配给dataframe并不容易

Dask数据帧被分成几个分区。这些分区可能有不同的长度,直到您实际compute数据格式时才知道这些长度。

因此,您不能简单地分配一个列表:您不知道如何在分区之间分发列表。

如何分配list

知道了上面的情况,我们就知道了拼图中缺少的部分:分区长度。下面是一个可重复的例子:

代码语言:javascript
复制
import dask
import dask.array as da

# Sample data
df = dask.datasets.timeseries()
mylist = list(range(len(df)))

# Work out the lengths of each partition
chunks = df.map_partitions(lambda x: len(x)).compute().to_numpy()

# Build a Dask array with the same partition sizes
myarray = da.from_array(mylist, chunks=tuple(chunks))

# Now you can assign!
df['test'] = myarray

该怎么办呢?

虽然上面的方法可以工作,但它需要compute整个数据帧。这通常是个坏主意,因为您只想计算一些较小的最终结果。

很有可能您可以重写您的代码,以便您的计算结果(生成日期列表的结果)产生例如Dask系列,因此非常懒惰。

你可以尝试用更多的细节重新表述你的问题(或者问另一个问题,因为这已经是一个合理的独立问题了),可能会利用dask.datasets.timeseries()作为一个可重复的例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68796634

复制
相关文章

相似问题

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