【问题标题】:Spark Dataframe change column valueSpark Dataframe 更改列值
【发布时间】:2021-03-13 22:41:04
【问题描述】:

我得到了一些 170 列的数据框。在一个列中,我有一个“名称”字符串,当我将它们写入 Postgres 时,这个字符串有时可能有一个不合适的特殊符号,如“'”。 我可以做这样的事情吗:

Df[$'name']=Df[$'name'].map(x => x.replaceAll("'","")) ?

我不想解析完整的 DataFrame,因为它非常庞大。请帮帮我

【问题讨论】:

    标签: scala apache-spark dataframe


    【解决方案1】:

    您不能改变 DataFrame,您只能将它们转换为具有更新值的新 DataFrame。在这种情况下 - 您可以使用 regex_replace 函数在 name 列上执行映射:

    import org.apache.spark.sql.functions._
    val updatedDf = Df.withColumn("name", regexp_replace(col("name"), ",", ""))
    

    【讨论】:

    • 我有一个类似的问题,但是我在一个数组中有一个特定的值列表:val ids = Array("1e4f199c", "6681b1b0")。我必须检查列“id”是否具有仅在 ids 中的值,然后替换该值,否则保留先前的值。那我该怎么办?
    • @SimpleFellow 您可以尝试使用来自org.apache.spark.sql.functions 的函数whenisin - 如果您需要帮助了解确切的方法,请随时发布一个新问题,答案有点太多了在评论中。
    • 这里是完整的程序:stackoverflow.com/questions/48627959/…
    • 如果我需要通过在 C 列和 D 列上设置条件来编辑 A 列和 B 列怎么办?
    【解决方案2】:

    你可以这样做

    df.withColumn("name", when($"name" === "'", ""))
    

    【讨论】:

      【解决方案3】:
      import org.apache.spark.sql.functions._
      
      df.withColumn("name",  lit(translate( translate(col("cpf"), ".", ""),"-","")))
      

      【讨论】:

      • 请在您的答案中添加一些解释,以便其他人可以从中学习
      猜你喜欢
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多