yoe*_*oel 1 scala dataframe apache-spark apache-spark-sql
如果我有一个名为df的DataFrame看起来像:
+---+---+
| a1+ a2|
+---+---+
|foo|bar|
|N/A|baz|
+---+---+
Run Code Online (Sandbox Code Playgroud)
我期望从:
val df2 = df.withColumn("a1", when($"a1" == "N/A", $"a2))
Run Code Online (Sandbox Code Playgroud)
df2看起来像:
+---+---+
| a1+ a2|
+---+---+
|foo|bar|
|baz|baz|
+---+---+
Run Code Online (Sandbox Code Playgroud)
但是我得到了:
error: type mismatch;
found : Boolean
required: org.apache.spark.sql.Column
Run Code Online (Sandbox Code Playgroud)
因此,听起来我需要一个在DataFrame的withColumn方法中产生其值的Column方法。
有任何类似的事情,或者其他方法来用当前列的值有条件地填充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|
+---+---+
Run Code Online (Sandbox Code Playgroud)