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

如何在Spark中用新值更新旧值?PySpark替换水果列值实例

在PySpark中替换列值的实用方法

下面以将fruits列里的Apple替换为Banana为例,介绍几种常用的实现方式:

方法1:使用when+otherwise条件表达式

这是最灵活的方案,支持多条件复杂替换场景:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when

# 初始化Spark会话
spark = SparkSession.builder.appName("ValueReplace").getOrCreate()

# 创建示例数据集
data = [("Apple", 10), ("Orange", 20), ("Apple", 15), ("Grape", 5)]
df = spark.createDataFrame(data, ["fruits", "quantity"])

# 执行值替换
updated_df = df.withColumn(
    "fruits",
    when(col("fruits") == "Apple", "Banana").otherwise(col("fruits"))
)

# 查看结果
updated_df.show()

方法2:使用replace函数(Spark 3.1及以上版本)

针对单值或多值的精确替换,这个方法更简洁:

from pyspark.sql.functions import replace

# 单值替换
updated_df = df.withColumn(
    "fruits",
    replace(col("fruits"), "Apple", "Banana")
)

# 也支持批量替换多个值(比如同时替换Apple和Orange)
# updated_df = df.withColumn(
#     "fruits",
#     replace(col("fruits"), {"Apple": "Banana", "Orange": "Grape"})
# )

updated_df.show()

方法3:使用regexp_replace正则替换

如果需要模糊匹配替换(比如替换包含指定字符的字符串),可以用正则实现:

from pyspark.sql.functions import regexp_replace

# 精确匹配Apple(和replace效果一致)
updated_df = df.withColumn(
    "fruits",
    regexp_replace(col("fruits"), "^Apple$", "Banana")
)

# 替换所有包含Apple的字符串(比如"Red Apple"换成"Red Banana")
# updated_df = df.withColumn(
#     "fruits",
#     regexp_replace(col("fruits"), "Apple", "Banana")
# )

updated_df.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:54:33