Как проверить, содержит ли весь столбец в pyspark значение, используя Expr - PullRequest
0 голосов
/ 21 января 2020

В pyspark, как я могу использовать expr, чтобы проверить, содержит ли целый столбец значение в columnA этой строки.

псевдокод ниже

df=df.withColumn("Result", expr(if any the rows in column1 contains the value colA (for this row) then 1 else 0))

1 Ответ

0 голосов
/ 21 января 2020

Возьмите произвольный пример:

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(), просто найдите соответствующий синтаксис SQL, и он должен работать в основном с 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|
+--------+-------------------+--------------+
...