A df1.printSchema()
kiírja az oszlopneveket és az adattípusokat, amelyekkel rendelkeznek.
A df1.drop($"colName")
eldobja az oszlopokat a nevük alapján.
Van mód arra, hogy ezt a parancsot az adattípus szerint módosítsa?
A df1.printSchema()
kiírja az oszlopneveket és az adattípusokat, amelyekkel rendelkeznek.
A df1.drop($"colName")
eldobja az oszlopokat a nevük alapján.
Van mód arra, hogy ezt a parancsot az adattípus szerint módosítsa?
Ha konkrét oszlopokat szeretne eldobni az adatkeretben a típusok alapján, akkor az alábbi részlet segít. Ebben a példában van egy adatkeretem két oszlopból, amelyek String és Int típusúak. Eldobom a String (minden String típusú mező kikerül) mezőmet a sémából annak típusa alapján.
import sqlContext.implicits._
val df = sc.parallelize(('a' to 'l').map(_.toString) zip (1 to 10)).toDF("c1","c2")
df.schema.fields
.collect({case x if x.dataType.typeName == "string" => x.name})
.foldLeft(df)({case(dframe,field) => dframe.drop(field)})
A newDf
sémája org.apache.spark.sql.DataFrame = [c2: int]
Íme egy divatos módszer a scala alkalmazásban:
var categoricalFeatColNames = df.schema.fields filter { _.dataType.isInstanceOf[org.apache.spark.sql.types.StringType] } map { _.name }