Ich bin neugierig, wie die Elemente eines Arrays in Klasse für Klasse zu filtern.Scala flatMap Filterelemente in Array-Instanz des Typs
case class FooBarGG(foo: Int, bar: String, baz: Option[String])
val df = Seq((1, "first", "A"), (1, "second", "A"),
(2, "noValidFormat", "B"),
(1, "lastAssumingSameDate", "C"))
.toDF("foo", "bar", "baz")
.as[FooBarGG]
.drop("replace")
val labelEncoder = multiLabelIndexer(columnsFactor)
val pipe = new Pipeline().setStages(labelEncoder)
val fitted = pipe.fit(df)
def multiLabelIndexer(factorCols: Seq[String]): Array[StringIndexer] = {
factorCols.map(
cName => new StringIndexer()
.setInputCol(cName)
.setOutputCol(s"${cName}_index")
)
.toArray
}
konnte nicht erhalten flatMap
zu arbeiten, wie ein Transformer
und nicht StringIndexerModel
erwartet wird.
stages flatMap {
// case _.isInstanceOf[StringIndexerModel] => Some(_)//Some(_.asInstanceOf[StringIndexerModel])
case StringIndexerModel => Some(_)
case _ => None
}
Mein Ansatz basiert auf Filtering a Scala List by type