dfLP
という名前のRDD[LabeledPoint]
を作成するコードがあります。各LabeledPoint
がありますDataFrameの特定の列にNULL値を代入することはできません
featInd
で指定df
の列のインデックスに対応するカラムtarget
-
df
データフレームの点の値。私はこのコードを実行すると
、私はエラーを取得する:
Caused by: java.lang.NullPointerException: Value at index 2 in null
は、私の知る限り理解し、それはdf
のいくつかの行がDouble
にキャストできない値null
を有することを意味します。
val targetInd = df.columns.indexOf("target")
val ignored = List("target")
val featInd = df.columns.diff(ignored).map(df.columns.indexOf(_))
val dfLP = df.rdd.map(r => LabeledPoint(
r.getDouble(targetInd),
Vectors.dense(featInd.map(r.getDouble(_)))
))
エラーがfeatInd
がArray[Int]
あるラインVectors.dense(featInd.map(r.getDouble(_)))
を指します。この配列には、既存の列のインデックスのみが含まれます(df
)。例えば、は、10
の列を持つdf
の場合は[1, 2, 3]
です。
UPDATE:
私はいくつかnull
値を持つカラム(col1
)を検出します。しかし、実行した後df = df.na.fill("0",Seq("col1"))
私はまだ同じエラーがあります。私がdf
を印刷すると、まだnull
の値が表示されます。どうして?