【问题标题】:Dataframe: Adding prefix to all columns in ScalaDataframe:为Scala中的所有列添加前缀
【发布时间】:2016-08-22 14:40:07
【问题描述】:
val prefix = "ABC"
val renamedColumns = df.columns.map(c=> df(c).as(s"$prefix$c"))
val dfNew = df.select(renamedColumns: _*)

嗨, 我对 scala 相当陌生,上面的代码可以完美地为所有列添加前缀。有人可以解释一下它是如何工作的吗? 上面的第二行将返回 col1 作为 ABCcol1 的映射,col2 作为 ABCcol2.... 等等 我很难理解第三行在做什么,尤其是最后的 ":_*。

提前感谢您的帮助。

【问题讨论】:

标签: scala dataframe


【解决方案1】:

第三行是 Scala 的 语法糖 的示例。本质上,Scala 有办法精确缩短您输入的内容,并且您发现了可怕的:_*

这个小部分有两个部分 - :_* 用于两个不同的目的。 : 通常用于归属,它告诉编译器“这是我需要用于此方法的类型”。但是,_* 是您的类型 - 在 Scala 中,这是类型可变参数。 Varargs 是一种具有任意数量值的类型(良好的资源here)。它允许您向方法传递一个您不知道其中元素数量的列表。

在您的示例中,您正在从原始数据框的列中创建一个名为 renamedColumns 的变量,并带有新的字符串附件。尽管您可能知道 df 中有多少列,但 Scala 不知道。当您创建 dfNew 时,您正在运行一个 select 语句并传入您的新列名,其中可能有一个任意数字。 本质上,您不知道您可能有多少列,因此您传入 varargs 以允许数字是任意的,因此由编译器确定。

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 2014-07-26
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2016-12-29
    • 2017-08-26
    相关资源
    最近更新 更多