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

如何用startswith替换单元格的整个值而非仅匹配字符串?

解决方法

你的需求是将所有以Cancelled开头的Status值统一替换为Eliminate,不需要用regexp_replace或UDF,直接通过条件判断赋值即可。

你的代码问题分析

你之前的代码报错是因为:

  1. 误用了replace函数:这里不需要替换字符串中的子串,而是要直接覆盖整个字段值,完全没必要用replace
  2. replace的参数顺序错误(Spark的replace函数需要指定被替换的子串和新值)

正确代码

首先导入必要的函数:

from pyspark.sql.functions import when, col

然后执行字段更新:

DF2 = DF1.withColumn(
    "Status",
    when(col("Status").startswith("Cancelled"), "Eliminate")
    .otherwise(col("Status"))
)

可选写法(用like匹配)

如果更习惯通配符匹配,也可以写成:

DF2 = DF1.withColumn(
    "Status",
    when(col("Status").like("Cancelled%"), "Eliminate")
    .otherwise(col("Status"))
)

执行后就能得到你期望的结果:

NameStatus
BillEliminate
JimActive
KimServicing
RodEliminate
TiiActive
MegEliminate

内容的提问来源于stack exchange,提问作者Jaime Neufer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:55:57