2017-07-19 44 views
1

我有以下問題:我想在數據幀A中添加一列RealCity,當City值爲'noClue'時,我從df B中選擇什麼,使用Key ,去城市。spark將col添加到另一個df上的條件數據幀

表A:

+---------+--------+ 
    |  Key | City| 
    +---------+--------+ 
    |a  | PDX | 
    +---------+--------+ 
    |b  | noClue | 

表B:

+---------+--------+ 
    |  Key | Name | 
    +---------+--------+ 
    |c  | SYD | 
    +---------+--------+ 
    |b  | AKL | 

我想用.withColumnwhen,但我不能選擇通過做這樣價值的另一個表(表二)。這樣做的好方法是什麼?非常感謝!

+0

是你的表B有多大 –

回答

5

既然你有兩個dataframes

答:

+---+------+ 
|key|City | 
+---+------+ 
|a |PDX | 
|b |noClue| 
+---+------+ 

B:

+---+----+ 
|key|Name| 
+---+----+ 
|a |SYD | 
|b |AKL | 
+---+----+ 

你可以簡單地join他們共同Key和使用withColumnwhen功能

val finalDF = A.join(B, Seq("Key"), "left").withColumn("RealCity", when($"City" === "noClue", $"Name").otherwise($"City")).drop("Name") 

你應該有最終輸出

+---+------+--------+ 
|key|City |RealCity| 
+---+------+--------+ 
|a |PDX |PDX  | 
|b |noClue|AKL  | 
+---+------+--------+ 
相關問題