我的 Spark 数据框的某些列名称中带有空格,必须用下划线替换。
我知道可以使用以下命令重命名单个列withColumnRenamed()
在sparkSQL中,但要重命名'n'个列,这个函数必须链接'n'次(据我所知)。
为了自动化此操作,我尝试过:
val old_names = df.columns() // contains array of old column names
val new_names = old_names.map { x =>
if(x.contains(" ") == true)
x.replaceAll("\\s","_")
else x
} // array of new column names with removed whitespace.
现在,如何将 df 的标头替换为new_names
作为最佳实践,您应该更喜欢表达式和不变性。
你应该使用val
and not var
越多越好。
因此,最好使用foldLeft
运算符,在本例中:
val newDf = df.columns
.foldLeft(df)((curr, n) => curr.withColumnRenamed(n, n.replaceAll("\\s", "_")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)