【发布时间】:2021-09-09 03:00:56
【问题描述】:
我想在 PySpark 2.2 中对数组列的每个元素进行子串化。我的 df 看起来像下面的那个,它是 类似于this,尽管我的 df 中的每个元素在连字符分隔符之前的长度相同。
+---------------------------------+----------------------+
|col1 |new_column |
+---------------------------------+----------------------+
|[hello-123, abcde-111] |[hello, abcde] |
|[hello-234, abcde-221, xyzhi-333]|[hello, abcde, xyzhi] |
|[hiiii-111, abbbb-333, xyzhu-222]|[hiiii, abbbb, xyzhu] |
+---------------------------------+----------------------+
我尝试根据this 答案调整上一个问题中的udf 以获得上面new_column 中的输出,但到目前为止还没有运气。有没有办法在 PySpark 2.2 中完成这项工作?
import pyspark.sql.functions as F
import pyspark.sql.types as T
cust_udf = F.udf(lambda arr: [x[0:4] for x in arr], T.ArrayType(T.StringType()))
df1.withColumn('new_column', cust_udf(col("col1")))
【问题讨论】:
标签: python arrays pyspark apache-spark-sql