在faces.config.xml
上拆分该列,然后将结果数组返回一个字符串:
|
我的样本输出框架:
import pyspark.sql.functions as F
import pyspark.sql.types as T
def str_list(x):
return str(x).replace("[","").replace("]","")
str_udf = F.udf(str_list,T.StringType())
df = df.withColumn("arr_split",F.split(F.col("QUALIFY"),"\|")) # escape character
df = df.withColumn("QUALIFY2",str_udf(F.col("arr_split")))
,
您的解决方案几乎已经存在-您只需要在开头和结尾添加单引号即可。您可以使用pyspark.sql.functions.concat
来实现:
from pyspark.sql.functions import col,concat,lit,regexp_replace
df.withColumn(
"QUALIFY2",concat(lit("'"),regexp_replace(col('QUALIFY'),r"\|",r"','"),lit("'"))
).show()
#+--------------+--------------------+
#| QUALIFY| QUALIFY2|
#+--------------+--------------------+
#|ColA|ColB|ColC|'ColA','ColB','ColC'|
#| ColA| 'ColA'|
#| ColZ|ColP| 'ColZ','ColP'|
#+--------------+--------------------+
或者,您可以避免使用正则表达式,并使用split
和concat_ws
来实现正则表达式:
from pyspark.sql.functions import split,concat_ws
df.withColumn(
"QUALIFY2",concat_ws("','",split("QUALIFY","\|")),'ColP'|
#+--------------+--------------------+
本文链接:https://www.f2er.com/3154259.html