我有一个dask-dataframe,并使用一些列来处理熊猫date_range进程,它将创建如下列表:
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‘=列表
但是它返回错误。
‘列赋值不支持类型列表’
有什么解决办法吗?
最后一列应该类似于
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]发布于 2021-08-17 12:35:49
将一个list分配给dataframe并不容易
Dask数据帧被分成几个分区。这些分区可能有不同的长度,直到您实际compute数据格式时才知道这些长度。
因此,您不能简单地分配一个列表:您不知道如何在分区之间分发列表。
如何分配list
知道了上面的情况,我们就知道了拼图中缺少的部分:分区长度。下面是一个可重复的例子:
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()作为一个可重复的例子。
https://stackoverflow.com/questions/68796634
复制相似问题