在PySpark中使用爆炸功能之前,是否可以将字符串类型列更改为数组类型列?

时间:2020-01-10 12:35:50

标签: pyspark-sql

我想知道是否可以将字符串类型的“数据”列更改为数组类型,但数字之间用逗号分隔。

#+----------+---------------------+------------+
#|date      |month                |data        |
#+----------+---------------------+------------+
#|2015      |08                   |01001111    |
#|2016      |06                   |011111101   |
#|2017      |02                   |0101011100  |
#|2018      |11                   |01101111    |
#+----------+---------------------+------------+

我需要下一个:

#+----------+---------------------+------------------------+
#|date      |month                |data                    |
#+----------+---------------------+------------------------+
#|2015      |08                   | [0,1,0,0,1,1,1,1]      |
#|2016      |06                   | [0,1,1,1,1,1,1,0,1]    |
#|2017      |02                   | [0,1,0,1,0,1,1,1,0,0]  |
#|2018      |11                   | [0,1,1,0,1,1,1,1]      |
#+----------+---------------------+------------------------+

之所以需要此更改,是因为我必须使用posexplode函数,并且该函数可用于数组。

谢谢。

1 个答案:

答案 0 :(得分:0)

是的,具有自定义功能(UDF):

df = df.withColumn("data", F.udf(lambda x: x.split(','))('data'))