You need to enable JavaScript to run this app. 如何在PySpark中根据另一列的两个条件设置目标列的值
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中根据另一列的两个条件设置目标列的值

基于PySpark按条件更新列值的实现方案

pyspark.sql.functions.when 完全支持基于其他列的取值做条件判断,实现目标列的自定义值设置,是处理这类场景的标准PySpark方法。

实现代码

首先导入所需函数:

from pyspark.sql.functions import when, col

使用withColumn重写foo列值,嵌套条件判断逻辑:

updated_df = original_df.withColumn(
    "foo",
    when(col("bar") == 2, "X")
    .when(col("bar") == 1, "Y")
    .otherwise(col("foo"))
)

逻辑匹配说明

  • 第一个判断分支:匹配bar列值等于2的行,将对应foo列设置为X
  • 第二个判断分支:匹配bar列值等于1的行,将对应foo列设置为Y
  • 兜底分支:未被前述条件命中的行,直接保留foo列的原有取值

处理后输出示例

对应原始输入数据,处理完成后的DataFrame结果为:

+---+----+---+
|id |foo |bar|
+---+----+---+
|1  |baz |0  |
|2  |baz |0  |
|3  |X   |2  |
|4  |Y   |1  |
+---+----+---+

注:when方法的两个入参均支持动态表达式,判断条件可以引用其他列的值,返回值也可以直接传入列对象、运算表达式,并非仅能处理静态固定值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 06:45:07