如何重命名以開頭的列abcd以開頭wxyz。
列串列:abcd_name, abcd_id, abcd_loc, empId, empCode
我需要更改以開頭的資料框中的列名稱abcd
必填列串列:wxyz_name, wxyz_id, wxyz_loc, empId, empCode
我嘗試使用以下代碼獲取所有列的串列,但不確定如何實作它。
val df_cols_abcd = df.columns.filter(_.startsWith("abcd")).map(df(_))
uj5u.com熱心網友回復:
你可以這樣做foldLeft:
val oldPrefix = "abcd"
val newPrefix = "wxyz"
val newDf = df.columns
.filter(_.startsWith(oldPrefix))
.foldLeft(df)((acc, oldName) =>
acc.withColumnRenamed(oldName, newPrefix oldName.substring(oldPrefix.length))
)
您過濾列的第一個想法startWith是正確的。唯一認為您錯過了重命名所有列的部分。
foldLeft如果您不熟悉,我建議您進行一些研究。思路如下:
- 我從一個初始資料框(
df在第一個括號中)開始。 - 我將對需要重命名的每一列應用一個函式(該函式是第二個括號中的那個)。此函式將一個累加器
acc(待修改)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474426.html
上一篇:從json陣列中按鍵獲取值
