Python if错误中的pyspark udf rlike条件
我使用的spark 2.1脚本是pyspark脚本 下面给出了我的数据帧 数据帧名称:df a 纳文 纳文123 现在我的输出应该是 a 纳文 我使用下面的自定义项Python if错误中的pyspark udf rlike条件,python,hadoop,apache-spark,pyspark,Python,Hadoop,Apache Spark,Pyspark,我使用的spark 2.1脚本是pyspark脚本 下面给出了我的数据帧 数据帧名称:df a 纳文 纳文123 现在我的输出应该是 a 纳文 我使用下面的自定义项 def fn(a): if((a==rlike("[0-9]"))|(a==' ')): return s df.withColumn("FLG",fn("a")).show() 我得到的错误如下:未定义全局名称“rlike” 请帮助我跨越这一障碍您想要的是一个过滤器而不是一个带有列的过滤器,它可以添加
def fn(a):
if((a==rlike("[0-9]"))|(a==' ')):
return s
df.withColumn("FLG",fn("a")).show()
我得到的错误如下:未定义全局名称“rlike”
请帮助我跨越这一障碍您想要的是一个
过滤器
而不是一个带有列的过滤器
,它可以添加一个额外的列
如果要严格按字母顺序排列:
import pyspark.sql.函数作为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”)。否则(df.a))
谢谢Marie,我已经实现了我需要的函数形式的这个结果。您没有正确使用rlike
函数中没有定义s
是字符串值Marie,我很抱歉,它是“s”
。我已经编辑了我的答案