Spark如何根据条件合并两列

aNa*_*ame 1 apache-spark apache-spark-sql

我有一个有 3 列的 Spark 数据帧,我想基于第三个主题合并两个主题,这是一个示例:

+---+---+---+
|AAA|bbb|ccc|
+---+---+---+
|AAA|BBB|  E|
|AAA|BBB|  R|
|AAA|BBB|  E|
|AAA|BBB|  R|
|AAA|BBB|  R|
|AAA|BBB|  E|
+-----------+
Run Code Online (Sandbox Code Playgroud)

我想当 CCC 列的值为 E 时使用 AAA 列的值,当 CCC 为 R 时使用 BBB,这里是输出:

+---+---+
|NEW|ccc|
+---+---+
|AAA|  E|
|BBB|  R|
|AAA|  E|
|BBB|  R|
|BBB|  R|
|AAA|  E|
+-------+
Run Code Online (Sandbox Code Playgroud)

Vam*_*ala 5

这可以使用 来完成when。(PySpark解决方案如下所示)

from pyspark.sql.functions import when
df.withColumn('New',when(df.ccc=='E',df.aaa).when(df.ccc=='R',df.bbb)).show()
Run Code Online (Sandbox Code Playgroud)