我想建立一個功能
def reorderColumns(columnNames: List[String]) = ...
可以應用于 Spark DataFrame,使得 中指定的列columnNames重新排序到左側,其余列(以任何順序)保留在右側。
示例:給定具有以下 5 列的 df
| 一個 | 乙| C | D | 乙
df.reorderColumns(["D","B","A"]) 回傳一個 df,其中列的順序如下:
| D | 乙| 一個 | C | 乙
uj5u.com熱心網友回復:
試試這個:
def reorderColumns(df: DataFrame, columns: Array[String]): DataFrame = {
val restColumns: Array[String] = df.columns.filterNot(c => columns.contains(c))
df.select((columns restColumns).map(col): _*)
}
使用示例:
val spark: SparkSession = SparkSession.builder().appName("test").master("local[*]").getOrCreate()
import spark.implicits._
val df = List((1, 3, 1, 6), (2, 4, 2, 5), (3, 6, 3, 4)).toDF("colA", "colB", "colC", "colD")
reorderColumns(df, Array("colC", "colB")).show
// output:
// ---- ---- ---- ----
//|colC|colB|colA|colD|
// ---- ---- ---- ----
//| 1| 3| 1| 6|
//| 2| 4| 2| 5|
//| 3| 6| 3| 4|
// ---- ---- ---- ----
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/427406.html
