2016-04-06 6 views
0

Ich habe einen Datenrahmen mit dem Namen f in Spark und ich würde gerne eine Spalte hinzufügen, basierend auf dem Fall. Dies ist, was ich versucht habe:Spalte mit einem Fall in Spark hinzufügen

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

Kann mir jemand sagen, wie dies zu implementieren.

Antwort

0

Der null Teil macht dies überraschend schwer. Eine Lösung ist eine DataFrame mit Ihrer Übersetzung Werte zu schaffen, und machen Sie einen join mit left_outer dagegen:

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| 
// +---+-----+------+ 
Verwandte Themen