2016-04-06 32 views
0

我在Spark中有一個名爲f的數據框,我想根據大小寫添加一個列。 這是我曾嘗試:在spark中添加一個列

df = f.withColumn('new_col', (case f.val when 1 then 'Y' when 0 then 'N' else null)) 

誰能告訴如何實現這一點。

回答

0

null部分使這非常困難。一種解決方案是創建您的翻譯值的DataFrame,並做了joinleft_outer反對這個:

val newDF = Seq(("Y",0)).toDF("srcVal", "newVal") 
// +------+------+ 
// |srcVal|newVal| 
// +------+------+ 
// |  Y|  0| 
// +------+------+ 

val df = Seq((1,"Y"),(2,"N"),(3,"Y")).toDF("key","value") 
// +---+-----+ 
// |key|value| 
// +---+-----+ 
// | 1| Y| 
// | 2| N| 
// | 3| Y| 
// +---+-----+ 

val finalDf = df.join(newDF, $"value" === $"srcVal", "left_outer").drop($"srcVal") 
// +---+-----+------+ 
// |key|value|newVal| 
// +---+-----+------+ 
// | 1| Y|  0| 
// | 2| N| null| 
// | 3| Y|  0| 
// +---+-----+------+