возвращает буквенно-цифровые значения из столбца в pyspark dataframe

#python-3.x #pyspark #apache-spark-sql #pyspark-dataframes

#python-3.x #пайспарк #apache-spark-sql #pyspark-фреймы данных

Вопрос:

У меня есть pyspark dataframe df. он состоит из 2 столбцов, подобных приведенному ниже примеру ввода. Я хотел бы создать новый выходной фрейм данных с новым столбцом ‘col3’, который содержит только буквенно-цифровые значения из строк в col2.

Я пытался использовать spark sql с

 regexp_extract('(' col1 ')','[^[A-Za-z0-9] ]', 0)
 

но он возвращает только null.

кто-нибудь может подсказать, как это сделать?

входные данные

 df.show()


 ---- ---- 
|col1|col2|
 ---- ---- 
|1   |abamp; |
 ---- ---- 
|2   |efg |
 ---- ---- 
 

выходной сигнал

  ---- ---- 
|col1|col3|
 ---- ---- 
|1   |ab  |
 ---- ---- 
|2   |efg |
 ---- ---- 
 

Ответ №1:

Используйте regexp_replace() функцию в spark.

Example:

 df.show()
# ---- ---- 
#|col1|col2|
# ---- ---- 
#|   1| abamp;|
#|   2| efg|
# ---- ---- 

from pyspark.sql.functions import *

df.withColumn("col3",regexp_replace("col2",'[^A-Za-z0-9]','')).show()
# ---- ---- ---- 
#|col1|col2|col3|
# ---- ---- ---- 
#|   1| abamp;|  ab|
#|   2| efg| efg|
# ---- ---- ----