PySpark DataFrame基于%符号拆分列时无%行的处理问题咨询
PySpark 基于%符号拆分单列生成两列的实现方案
实现思路
使用PySpark内置的正则提取函数regexp_extract分别匹配两列的目标内容,无需复杂的分支判断:
- value列:匹配字符串开头到第一个
%的所有内容,无%时返回空字符串 - Description列:匹配第一个
%之后的所有内容,无%时返回完整字符串
完整实现代码
from pyspark.sql import functions as F # 构造测试数据(实际使用时替换为你自己的DataFrame即可) data = [ (" 10% OF VALUE",), (" 20% OF VALUE",), (" This is null VALUE",), (" 0 is the value",) ] df = spark.createDataFrame(data, ["Default_value"]) # 拆分生成目标列 df_result = df.withColumn( "value", F.regexp_extract(F.col("Default_value"), r"^[^%]*%", 0) ).withColumn( "Description", F.regexp_extract(F.col("Default_value"), r"(?:^[^%]*%)?(.*)", 1) ) # 查看输出结果 df_result.select("value", "Description").show(truncate=False)
可选优化
如果需要去除两列首尾的多余空格,只需要给提取逻辑套上trim函数即可:
df_result = df.withColumn( "value", F.trim(F.regexp_extract(F.col("Default_value"), r"^[^%]*%", 0)) ).withColumn( "Description", F.trim(F.regexp_extract(F.col("Default_value"), r"(?:^[^%]*%)?(.*)", 1)) )
内容的提问来源于stack exchange,提问作者DigiLearner
相关产品推荐
相关产品推荐

