如何使用Expr检查pyspark中整个列是否包含值
在pyspark中,如何使用expr检查整列是否包含该行columnA中的值 下面是伪代码如何使用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
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中是不可能的