Можно ли изменить столбец типа строки на столбец типа массива перед использованием функции разнесения в PySpark? - PullRequest
0 голосов
/ 10 января 2020

Я хотел бы знать, возможно ли изменить столбец «data» типа String на тип массива, но с запятой между числами.

#+----------+---------------------+------------+
#|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 голосов
/ 10 января 2020

Да, с пользовательской функцией (UDF):

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