开发者社区> 问答> 正文

如何重命名scala数据框中的列标题

社区小助手 2018-12-12 15:11:43 411

如何在scala数据帧上执行string.replace(“fromstr”,“tostr”)。据我所知,withColumnRenamed执行替换所有列而不仅仅是标题。

Scala
分享到
取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:20:13

    withColumnRenamed仅重命名列名称,数据保持不变。如果需要更改行上下文,可以使用以下方法之一:

    import sparkSession.implicits._
    import org.apache.spark.sql.functions._

    val inputDf = Seq("to_be", "misc").toDF("c1")
    val resultd1Df = inputDf
    .withColumn("c2", regexp_replace($"c1", "^to_be$", "not_to_be"))
    .select($"c2".as("c1"))
    resultd1Df.show()

    val resultd2Df = inputDf
    .withColumn("c2", when($"c1" === "to_be", "not_to_be").otherwise($"c1"))
    .select($"c2".as("c1"))
    resultd2Df.show()

    def replace(mapping: Map[String, String]) = udf(
    (from: String) => mapping.get(from).orElse(Some(from))
    )

    val resultd3Df = inputDf
    .withColumn("c2", replace(Map("to_be" -> "not_to_be"))($"c1"))
    .select($"c2".as("c1"))
    resultd3Df.show()
    输入数据帧:

    c1
    to_be
    misc

    结果数据框:

    c1
    not_to_be
    misc
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程