2017-05-05 4 views
1

私がどのように見えるのdfのデータフレームを呼び出した場合:DF2がどのように見えるだろうとDataFrame.withColumnでは、2番目のパラメータの条件として列の値を使用するにはどうすればよいですか?

val df2 = df.withColumn("a1", when($"a1" == "N/A", $"a2)) 

+---+---+ 
| a1+ a2| 
+---+---+ 
|foo|bar| 
|baz|baz| 
+---+---+ 

ではなく、私が手に:私はから期待

+---+---+ 
| a1+ a2| 
+---+---+ 
|foo|bar| 
|N/A|baz| 
+---+---+ 

error: type mismatch; 
found : Boolean 
required: org.apache.spark.sql.Column 

DataFrameのwithColumnメソッド内で値を生成するColumnメソッドが必要なようです。

withColumnの置換パラメータに条件付きで現在の列の値を設定するなどの方法はありますか?

答えて

4

あなたは===代わりの==が必要になります。

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| 
+---+---+ 
1

あなたは===ない==を使用する必要があります。

scala> val df = Seq(("foo", "bar"), ("N/A", "baz")).toDF("a1", "a2") 
df: org.apache.spark.sql.DataFrame = [a1: string, a2: string] 

scala> df.show 
+---+---+ 
| a1| a2| 
+---+---+ 
|foo|bar| 
|N/A|baz| 
+---+---+ 

scala> df.withColumn("a1", when($"a1" === "N/A", $"a2").otherwise($"a1")).show 
+---+---+ 
| a1| a2| 
+---+---+ 
|foo|bar| 
|baz|baz| 
+---+---+ 
+3

3秒でそれにあなたを打つ@psidom ...:O –

+2

@TzachZoharだけ私はいつもSpark REPLを稼働させておくべきだということを示しています。そのスタートアップ時間はすべての違いをもたらしたでしょう! –

+0

あなたにおかげで両方のおかげで - ボーナスの質問、どのように来る=== nullは動作していないようですか? – yoel

関連する問題