2016-08-24 11 views
0

いくつかの列がString型で、NULLをString値(実際のNULLではない)として含むDataframeがあります。私はそれらをゼロで転用したい。明らかにdf.na.fill(0)は機能しません。どのように私はそれらを0で置き換えることができますか?あなたはまた、この動作を複製し、独自のudfを作成することができSpark/ScalaでNULL値をゼロに代入する方法

val df1 = df.na.replace("*", Map("NULL" -> "0")) 

:あなたはこれらの接頭辞.naによってアクセスすることができ、DataFrameNaFunctionsからreplace()を使用することができます

+0

私はSpark 1.6.0を使用していますので、置き換えは存在しません –

答えて

1

import org.apache.spark.sql.functions.col 

val nullReplacer = udf((x: String) => { 
    if (x == "NULL") "0" 
    else x 
}) 

val df1 = df.select(df.columns.map(c => nullReplacer(col(c)).alias(c)): _*) 

しかしこれは次のようになります必要以上に多くのコード行を犠牲にして、上記と同じことを行うと余分なものがあります。

+0

nullを置き換えません。結果のデータフレームにはまだ「ヌル」があります。 –

+0

小さな再現可能な例を表示できますか? – mtoto

+0

'' .na''は実際のnull(欠損値)を持つセルだけを選択すると思います。 –

関連する問題