0
私はf
という名前のデータフレームをSparkに持っており、大文字小文字に基づいて列を追加したいと思います。 これは私がしようとしているものです:sparkのケースを含む列を追加する
df = f.withColumn('new_col', (case f.val when 1 then 'Y' when 0 then 'N' else null))
誰もがこれを実装する方法を教えてもらえます。
私はf
という名前のデータフレームをSparkに持っており、大文字小文字に基づいて列を追加したいと思います。 これは私がしようとしているものです:sparkのケースを含む列を追加する
df = f.withColumn('new_col', (case f.val when 1 then 'Y' when 0 then 'N' else null))
誰もがこれを実装する方法を教えてもらえます。
null
部分はこれを驚くほど難しくします。一つの解決策は、あなたの移動値とDataFrame
を作成し、これに対するleft_outer
でjoin
を行うことです。
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|
// +---+-----+------+