我使用的是spark2.1脚本是pyspark脚本我的数据框如下Dataframename:df一纳文纳文123现在我的输出应该是一纳文我使用下面的自定义项
def fn(a): if((a==rlike("[0-9]"))|(a==' ')): return s df.withColumn("FLG",fn("a")).show()
我得到的错误如下:全局名称'rlike'没有定义请帮助我跨过这个障碍
uqzxnwby1#
你想要一个 filter 不是一个 withColumn 增加了一列。如果要严格按字母顺序排列:
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中重写函数:
rlike
df = df.withColumn("isCharString", psf.when( df.a.rlike("[0-9]")| (df.a == " "), psf.lit("s")).otherwise(df.a))
1条答案
按热度按时间uqzxnwby1#
你想要一个
filter
不是一个withColumn
增加了一列。如果要严格按字母顺序排列:
如果你想保留没有数字的字符串
使用函数时出现的错误是因为
rlike
作为独立函数(不是),它是类pyspark列的属性。要在spark中重写函数: