Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向dask数据帧添加随机数列的正确方法_Python_Random_Dask_Random Seed_Dask Dataframe - Fatal编程技术网

Python 向dask数据帧添加随机数列的正确方法

Python 向dask数据帧添加随机数列的正确方法,python,random,dask,random-seed,dask-dataframe,Python,Random,Dask,Random Seed,Dask Dataframe,向dask数据帧添加随机数列的正确方法是什么?显然,我可以使用map_partitions将列添加到每个分区,但我不确定当dask并行该计算时如何处理随机状态。(即,它是否会在所有工人中使用相同的随机状态,从而在每个工人中生成相同的随机数?) 在dask.array.random()中似乎有相关函数,但我找不到如何将这些函数与dask数据帧一起使用的示例。根据本文的讨论 (),不需要设置/跟踪numpyseed,建议使用dask.array(问题中提到过)。那么,再现随机性的最佳途径可能是创建d

向dask数据帧添加随机数列的正确方法是什么?显然,我可以使用
map_partitions
将列添加到每个分区,但我不确定当dask并行该计算时如何处理随机状态。(即,它是否会在所有工人中使用相同的随机状态,从而在每个工人中生成相同的随机数?)


dask.array.random
()中似乎有相关函数,但我找不到如何将这些函数与dask数据帧一起使用的示例。

根据本文的讨论 (),不需要设置/跟踪
numpy
seed,建议使用
dask.array
(问题中提到过)。那么,再现随机性的最佳途径可能是创建
dask.array
并转换为
dask.dataframe

将dask.array导入为da
#这是不可复制的
对于范围(3)内的uu:
x=da.random.random((10,1),chunks=(2,2))
打印(x.sum().compute())
#这是可复制的
对于范围(3)内的uu:
state=da.random.RandomState(1234)
y=state.random(大小=(10,1),块=(2,2))
打印(y.sum().compute())
#转换为ddf
将dask.dataframe作为dd导入
ddf=dd.from_dask_数组(y,列=['A'])
#如果存在另一个现有数据帧ddf2
ddf2=dd.from_pandas(pd.DataFrame(范围(10),列=['B']),npartitions=2)
ddf2
#然后,即使分区没有对齐,简单的列分配也会起作用
ddf2['A']=ddf['A']
打印((ddf.compute()==ddf2[['A']].compute()).sum()==len(ddf))
#当然,让分区对齐会更有效
#可以使用ddf2.visualize()检查DAG以了解原因
#还要注意,ddf和ddf2的长度应匹配
#否则,下游可能会出现意外情况
#要了解原因,请尝试更改上面“y”的大小,然后进行比较
#ddf和ddf2

感谢您提供了
dask.array
的示例。考虑到我想将数组作为一个新列添加到现有的dask数据帧中,我应该对
chunks
参数做些什么?即,数组的分块和数据帧的分区是如何相互关联的?我能否以与现有数据帧相同的方式创建数组?好的,如果您的现有数据帧已被索引(
。已知分区
为真),那么一个简单的赋值将起作用:
ddf_existing['new_col']=ddf_from_array['existing_col']
(即使分区大小未对齐)。如果不知道划分,那就更棘手了。然而,对于您想要的用例来说,这可能使情况过于复杂了?您是否需要可复制/受控的随机性?如果没有,那么您概述的
map\u分区
方式就可以了,如果您确实需要,那么我想您需要确保您现有的数据帧已被索引(如果没有)。只需在上面的答案中添加一个简单的示例