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

PySpark替换000与null为UNDEFINED时原有数据变null如何解决

问题根因

你使用的PySpark when 函数仅定义了条件匹配时的返回值,未指定条件不匹配时的返回规则,因此所有不满足等于000或为null的有效值都会被默认赋值为null。

正确实现方式

方案1:使用when + otherwise(逻辑最直观)

首先确保已导入需要的函数:

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

修改后的处理代码如下:

lastvalue_month = lastvalue_month.withColumn(
    'province',
    # 满足条件时替换为UNDEFINED
    when((col('province') == '000') | col('province').isNull(), lit('UNDEFINED'))
    # 不满足条件时保留原有值
    .otherwise(col('province'))
)

方案2:使用PySpark内置NA处理方法

你也可以拆分两步处理,逻辑更易读:

lastvalue_month = lastvalue_month \
    # 先将null替换为UNDEFINED
    .na.fill('UNDEFINED', subset=['province']) \
    # 再将000替换为UNDEFINED
    .replace('000', 'UNDEFINED', subset=['province'])

两种方案均可以实现仅替换000和null为UNDEFINED,同时保留其他原有有效值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:02