PySpark regexp_replace替换字符串'null'为None异常问题求助
解决Spark DataFrame中字符串'null'替换为None的问题
你之前用regexp_replace出错的原因有两点:
regexp_replace的第三个参数传入None时,Spark会将所有结果置为null,不管原字段是否匹配正则规则- 你写的正则
'null'是匹配子串逻辑,而非精确匹配整个字符串(不过这里核心问题是替换值为None导致的全局null)
以下是两种符合预期的解决方案:
方案1:使用条件判断(when+otherwise)
通过精确匹配字符串'null',仅替换符合条件的值:
from pyspark.sql.functions import col, when df = df.withColumn('name', when(col('name') == 'null', None).otherwise(col('name')))
方案2:使用DataFrame.replace方法
专门用于对指定列做精确值替换:
df = df.replace({'null': None}, subset=['name'])
处理后得到的DataFrame符合预期:
name state None CA Julia null Robert null None NJ
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

