作者:小么么和 | 来源:互联网 | 2023-02-04 17:30
如果我有一个名为df的DataFrame看起来像:
+---+---+
| a1+ a2|
+---+---+
|foo|bar|
|N/A|baz|
+---+---+
我期望从:
val df2 = df.withColumn("a1", when($"a1" == "N/A", $"a2))
df2看起来像:
+---+---+
| a1+ a2|
+---+---+
|foo|bar|
|baz|baz|
+---+---+
但是我得到了:
error: type mismatch;
found : Boolean
required: org.apache.spark.sql.Column
因此,听起来我需要一个在DataFrame的withColumn方法中产生其值的Column方法。
有任何类似的事情,或者其他方法来用当前列的值有条件地填充withColumn的替换参数吗?
1> Psidom..:
您需要===
代替==
:
val df2 = df.withColumn("a1", when($"a1" === "N/A", $"a2").otherwise($"a1"))
// df2: org.apache.spark.sql.DataFrame = [a1: string, a2: string]
df2.show
+---+---+
| a1| a2|
+---+---+
|foo|bar|
|baz|baz|
+---+---+