pyspark-避免使用explode

jhdbpxl9  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(455)

我想检查array column的值是否等于“a”,而不使用“explode”或“udf”,因为这会使我的 Dataframe 非常大,并且过程非常缓慢。
所以我有这个

+-----+----+--------------------+---------+
| Name| Age|            Subjects|   Grades|
+-----+----+--------------------+---------+
|[Bob]|[16]|[Maths, Physics, ...|[A, B, C]|
+-----+----+--------------------+---------+

我想要这个

+-----+----+--------------------+---------+--------------------+
| Name| Age|            Subjects|   Grades|         test       |
+-----+----+--------------------+---------+--------------------+
|[Bob]|[16]|[Maths, Physics, ...|[A, B, C]|[true, false, false]|
+-----+----+--------------------+---------+--------------------+

有解决办法吗?
谢谢,这是事先准备好的。

rqdpfwrv

rqdpfwrv1#

您可以使用sql TRANSFORM 为此

import pyspark.sql.functions as F

df = df.withColumn("test", F.expr("TRANSFORM(Grades, x -> x = 'A')"))

相关问题