#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|
# ---- ---- ----