python - 如何使用 PySpark 在用于字符串的列中用 NULL 替换整数的任何实例?
问题描述
注意:这是Spark
版本2.1.1.2.6.1.0-129
我有一个火花数据框。其中一列的状态为字符串类型(例如伊利诺伊州、加利福尼亚州、内华达州)。此列中有一些数字实例(例如 12、24、01、2)。我想用 . 替换整数的任何实例NULL
。
以下是我编写的一些代码:
my_df = my_df.selectExpr(
" regexp_replace(states, '^-?[0-9]+$', '') AS states ",
"someOtherColumn")
此正则表达式将整数的任何实例替换为空字符串。我想在 python 中将其替换为 None 以将其指定为NULL
DataFrame 中的值。
解决方案
我强烈建议您查看PySpark SQL 函数,并尝试正确使用它们而不是selectExpr
from pyspark.sql import functions as F
(df
.withColumn('states', F
.when(F.regexp_replace(F.col('states'), '^-?[0-9]+$', '') == '', None)
.otherwise(F.col('states'))
)
.show()
)
# Output
# +----------+------------+
# | states|states_fixed|
# +----------+------------+
# | Illinois| Illinois|
# | 12| null|
# |California| California|
# | 01| null|
# | Nevada| Nevada|
# +----------+------------+
推荐阅读
- javascript - 拉动刷新奇怪的行为
- ruby-on-rails - 是否可以创建一个在创建新的 Rails 应用程序时执行的脚手架?
- angular - Angular 开始监听 AppData/Local/Programs/Git
- kubernetes-helm - Helm:coalesce.go:196:警告:不能用非表覆盖表用于 env(map [])
- java - 从后台任务将日志保存到文件系统
- reactjs - Framer:检查元素是否进入视口
- python - 如何排除特定api应用python中间件的所有授权
- c++ - 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组。实际上比较的值是多少,
- ios - 无法将“Int”类型的值转换为预期的参数类型“IndexPath”
- python - Matplotlib - 为什么我保存的动画视频是空白的?