Scala Dataframe.columns - 列的顺序



如何按照与数据帧中相同的顺序获取列?

val df = Seq(("1", "2", "a"), ("3", "4", "b"), ("5", "6", "d")).toDF("col1", "col2", "col3")
df.printSchema()
df: org.apache.spark.sql.DataFrame = [col1: string, col2: string ... 1 more field]
root
|-- col1: string (nullable = true)
|-- col2: string (nullable = true)
|-- col3: string (nullable = true)

df.columns
Array[String] = Array(col1, col2, col3)

dataset.columns给出了列,它们似乎顺序相同,但我找不到任何关于这种情况的文档。我们可以依靠这种方法来获取与数据集中相同的列吗?

我们可以依靠这种方法来获取与它们在数据集中相同的顺序的列吗?

是的


def columns的定义是:

/**
* Returns all column names as an array.
*
* @group basic
* @since 1.6.0
*/
def columns: Array[String] = schema.fields.map(_.name)

哪些访问,schema类型为StructType并包含field

case class StructType(fields: Array[StructField])

由于我们依赖于Array,这里;标准库中的一个类,并使用它的基本map方法,我们确实可以依赖排序

最新更新