如何使用PySpark将字符串类型列中的整数替换为NULL
Spark整数字符串转NULL实现方案
针对你使用的Spark 2.1.1.2.6.1.0-129版本,你可以通过条件判断结合正则匹配的方式实现需求,regexp_replace仅支持替换为固定字符串,无法直接生成NULL值,调整写法如下:
1. 保留selectExpr写法的实现
my_df = my_df.selectExpr( "CASE WHEN states RLIKE '^-?[0-9]+$' THEN NULL ELSE states END AS states", "someOtherColumn" )
上述逻辑说明:
- 用
RLIKE正则匹配校验states列是否为纯整数字符串 - 匹配成功时直接返回Spark内置NULL值,Python端读取时会自动转为None类型
- 匹配失败时返回原州名字符串,不影响正常数据
2. 可选调整说明
如果你的业务场景中不存在负整数值,可将正则中的-?移除,调整为'^[0-9]+$'即可仅匹配正整数字符串。
内容的提问来源于stack exchange,提问作者Zaki Siyaji
相关产品推荐
相关产品推荐

