arrays - 拆分 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]
请向我建议实现这一目标的最佳方法?
解决方案
您可以使用称为 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,]|
+------------------------------------------+------------+
推荐阅读
- javascript - 您可以更改 googlemaps Api 路线的颜色和引脚吗?
- ruby-on-rails - Rails GQL 加载器返回子值
- javascript - SCRIPT5018:SCRIPT5018:意外的量词 - IE 的 contentDisposition.match() 的替代方法是什么?
- mysql - mysql中的多个连接与3个表
- java - 其他服务器套接字在向服务器套接字发送数据时接收数据
- c# - 如何从另一个类访问协程中定义的变量?
- python - 在 AWS Transcribe 中实时获取 BadRequestException
- excel - 在 VBA 的 Excel 工作表中计算所有单元格中文本出现次数的最佳和最快方法是什么?
- python - 如何增加箱形图x轴上的值之间的空间?
- cypress - 无法读取未定义的属性“indexOf”-Java 应用程序中的赛普拉斯测试