gpt4 book ai didi

PySpark - 将数组列分割成更小的 block

转载 作者:行者123 更新时间:2023-12-04 13:06:14 29 4
gpt4 key购买 nike

假设我有一个带有列的数据集

 # Output
#+-----------------+
#| arrayCol|
#+-----------------+
#| [1, 2, 3, 4, 5] |
#+-----------------+

我想知道是否可以在不使用 UDF 的情况下将此列拆分为较小的 max_size block 。

所需的结果如下,max_size = 2:

 # Output
#+-----------------------+
#| arrayCol|
#+-----------------------+
#| [[1, 2], [3, 4], [5]] |
#+-----------------------+

最佳答案

使用 transformfilter 的另一种方法是使用 if 和使用 mod 来决定分割并使用 slice (对数组进行切片)

from pyspark.sql import functions as F
n = 2
df.withColumn("NewCol",F.expr(f"""
filter(
transform(arrayCol,(x,i)-> if (i%{n}=0 ,slice(arrayCol,i+1,{n}), null)),x->
x is not null)
""")).show(truncate=False)


+---------------+---------------------+
|arrayCol |NewCol |
+---------------+---------------------+
|[1, 2, 3, 4, 5]|[[1, 2], [3, 4], [5]]|
+---------------+---------------------+

关于PySpark - 将数组列分割成更小的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69324262/

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