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

问题描述 投票:0回答:1

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

#+----------+---------------------+------------+
#|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函数,并且它可以与数组一起使用。

提前感谢。

pyspark-sql
1个回答
0
投票

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

df = df.withColumn("data", F.udf(lambda x: x.split(','))('data'))
© www.soinside.com 2019 - 2024. All rights reserved.