首页 > 解决方案 > 拆分 pyspark 数据框中的 Array 列

问题描述

我有一个如下所示的数据框

 col1
 -----------------
 [a1_b1_c1, a2_b2_c2, a3_b3_c3]
 [aa1_bb1_cc1, aa2_bb2_cc2, aa3_bb3]
 [aaa2_bbb2_ccc1, aaa2_bbb2_cc2, aaa3_bbb3]

现在我想拆分元素,需要形成下面提到的数据框,

newcol1
--------
[c1,c2,c3]
[cc1,cc2,null]
[ccc1,ccc2,null]

请向我建议实现这一目标的最佳方法?

标签: arraysdataframeapache-sparkpysparksplit

解决方案


您可以使用称为 TRANSFORM的内置高阶函数。

df.createTempView("tab")
spark.sql(
"select col1, TRANSFORM(col1, v-> split(v, '_')[2]) as newcol1 from tab")\
.show(truncate=False)

+------------------------------------------+------------+
|col1                                      |newcol1     |
+------------------------------------------+------------+
|[a1_b1_c1, a2_b2_c2, a3_b3_c3]            |[c1, c2, c3]|
|[aa1_bb1_cc1, aa2_bb2_cc2, aa3_bb3]       |[cc1, cc2,] |
|[aaa2_bbb2_ccc1, aaa2_bbb2_cc2, aaa3_bbb3]|[ccc1, cc2,]|
+------------------------------------------+------------+

推荐阅读