【问题标题】:How to add a column of indices of a character in a string on a Spark Dataframe?如何在 Spark Dataframe 上的字符串中添加一列字符索引?
【发布时间】:2018-11-04 21:14:47
【问题描述】:

我有一个带有二进制字符串列的 spark 数据框。我想向数据框中添加一列,该列的每个元素中的索引为 1。

我有一个用于获取索引的模式匹配函数,但我需要将此函数应用于 spark 数据框列。

def patternMatching(pattern: String, str: String): List[Int] =
  pattern.r.findAllMatchIn(str).map(_.start).toList


patternMatching("1", "000110010010001110")

最终,我要做的是获取下面的数据框;

Binary_String   |   Vec
         1010   |   List(1,3)
         1100   |   List(1,2)
         0010   |   List(3)
         0000   |   List()

【问题讨论】:

    标签: scala apache-spark dataframe pattern-matching


    【解决方案1】:

    您可以定义一个 UDF:

    val patternMatching = udf((pattern: String, str: String) => 
        pattern.r.findAllMatchIn(str).map(_.start).toList)
    

    将其应用于列:

    Seq("000110010010001110").toDF("x")
        .select(patternMatching(lit("0"),col("x")).as("x"))
        .show()
    

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 2021-06-09
      • 2019-11-12
      • 2022-01-23
      • 1970-01-01
      • 2018-01-05
      • 2023-02-02
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多