gpt4 book ai didi

arrays - 来自 ArrayType Pyspark 列的随机样本

转载 作者:行者123 更新时间:2023-12-05 08:31:08 26 4
gpt4 key购买 nike

我在 Pyspark 数据框中有一列,结构如下

Column1
[a,b,c,d,e]
[c,b,d,f,g,h,i,p,l,m]

我想返回另一列,随机选择每行中的每个数组,数量在函数中指定。

所以像 data.withColumn("sample", SOME_FUNCTION("column1", 5)) 返回:

sample
[a,b,c,d,e]
[c,b,h,i,p]

希望避免使用 python UDF,感觉应该有可用的函数??

这个有效:

import random
def random_sample(population):
return(random.sample(population, 5))

udf_random = F.udf(random_sample, T.ArrayType(T.StringType()))
df.withColumn("sample", udf_random("column1")).show()

但正如我所说,最好避免使用 UDF。

最佳答案

对于 spark 2.4+,使用 shuffleslice :

df = spark.createDataFrame([(list('abcde'),),(list('cbdfghiplm'),)],['column1'])

df.selectExpr('slice(shuffle(column1),1,5)').show()
+-----------------------------+
|slice(shuffle(column1), 1, 5)|
+-----------------------------+
| [b, a, e, d, c]|
| [h, f, d, l, m]|
+-----------------------------+

关于arrays - 来自 ArrayType Pyspark 列的随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60176320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com