You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:06:03