我有一個這樣的資料框:
| 狗 | 貓 |
|---|---|
| 單元格 1 | 單元格 2 |
| 單元格 3 | 單元格 4 |
和這樣的串列:
dog, bulldog
cat, persian
我想創建一個函式來查找串列中列的名稱并將其替換為第二個元素(bulldog, persian)。
所以最終的結果應該是:
| bulldog | persian |
| -------- | -------- |
| Cell 1 | Cell 2 |
| Cell 3 | Cell 4 |
uj5u.com熱心網友回復:
您需要在顯示的預定義串列中查找原始列。從中創建一個更容易,Map因此可以執行查找:
val list: List[(String, String)] = List(("dog", "bulldog"), ("cat", "persian"))
val columnMap = list.toMap
// columnMap: scala.collection.immutable.Map[String,String] = Map(dog -> bulldog, cat -> persian)
val originalCols = df.columns
?
val renamedCols = originalCols.map{
c => if (columnMap.keys.toArray.contains(c)) s"${c} as ${columnMap.getOrElse(c, "")}"
else c
}
println(renamedCols)
// renamedCols: Array[String] = Array(dog as bulldog, cat as persian)
df.selectExpr(renamedCols: _*).show(false)
// ------- -------
// |bulldog|persian|
// ------- -------
// |Cell 1 |Cell 2 |
// |Cell 1 |Cell 2 |
// ------- -------
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450228.html
