我正在使用 spark 2.1 脚本是 pyspark 脚本
下面给出了我的数据帧
数据帧名称:DF
一个
纳文
纳文123
现在我的输出应该是
一个
纳文
我为此在下面使用udf
def fn(a):
if((a==rlike("[0-9]"))|(a==' ')):
return s
df.withColumn("FLG",fn("a")).show()
我收到错误,例如:未定义全局名称"rlike">
请帮助我跨过这个障碍
您需要一个filter
而不是一个添加额外列的withColumn
。
如果你想要严格的字母顺序:
import pyspark.sql.functions as psf
df = df.withColumn("isCharString", df.a.rlike("^[a-zA-Z]+$"))
如果要保留没有数字的字符串
df = df.withColumn("isCharString", ~df.a.rlike("[0-9]"))
使用函数时遇到的错误是因为您将rlike
用作独立函数,但事实并非如此,它是类 pyspark 列的属性。要在 Spark 中重写函数,请执行以下操作:
df = df.withColumn("isCharString", psf.when(
df.a.rlike("[0-9]")| (df.a == " "),
psf.lit("s")).otherwise(df.a))