如果我有一个名为 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
所以听起来我需要一个 Column 方法来在 DataFrame 的 withColumn 方法中产生它的值。
任何这样的事情,或其他方法来有条件地用当前列的值填充 withColumn 的替换参数?
最佳答案
你需要 ===
而不是 ==
:
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|
+---+---+
关于scala - 在 DataFrame.withColumn 中,如何使用列的值作为第二个参数的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810377/