如何使用Expr检查pyspark中整个列是否包含值

如何使用Expr检查pyspark中整个列是否包含值,pyspark,pyspark-sql,Pyspark,Pyspark Sql,在pyspark中,如何使用expr检查整列是否包含该行columnA中的值 下面是伪代码 df=df.withColumn(“Result”,expr(如果column1中的任何行包含colA值(对于此行),则为1 else 0))举一个任意示例: valuesCol = [('rose','rose is red'),('jasmine','I never saw Jasmine'),('lily','Lili dont be silly'),('daffodil','what a flow

在pyspark中,如何使用expr检查整列是否包含该行columnA中的值

下面是伪代码


df=df.withColumn(“Result”,expr(如果column1中的任何行包含colA值(对于此行),则为1 else 0))

举一个任意示例:

valuesCol = [('rose','rose is red'),('jasmine','I never saw Jasmine'),('lily','Lili dont be silly'),('daffodil','what a flower')]
df = sqlContext.createDataFrame(valuesCol,['columnA','columnB'])
df.show()
+--------+-------------------+
| columnA|            columnB|
+--------+-------------------+
|    rose|        rose is red|
| jasmine|I never saw Jasmine|
|    lily| Lili dont be silly|
|daffodil|      what a flower|
+--------+-------------------+
在此处应用
expr()
。如何使用
expr()

df = df.withColumn('columnA_exists',expr("(case when instr(lower(columnB), lower(columnA))>=1 then 1 else 0 end)"))
df.show()
+--------+-------------------+--------------+
| columnA|            columnB|columnA_exists|
+--------+-------------------+--------------+
|    rose|        rose is red|             1|
| jasmine|I never saw Jasmine|             1|
|    lily| Lili dont be silly|             0|
|daffodil|      what a flower|             0|
+--------+-------------------+--------------+

所以在第1行,玫瑰是红色的,可能会在另一行,也许这在spark中是不可能的