我使用spark 2.1脚本是pyspark脚本
我的数据框如下所示
数据框名称:df
一
纳温
Naveen123
现在我的输出应为
一
纳温
我在udf下使用
def fn(a):
if((a==rlike("[0-9]"))|(a==' ')):
return s
df.withColumn("FLG",fn("a")).show()
我收到的错误如下:全局名称'rlike'未定义
请帮助我渡过这个障碍
答案 0 :(得分:1)
您希望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))