首页 文章

如何使用Apache Spark和Scala将数据帧的字符串列转换为Array [String]列

提问于
浏览
-1

我有一个DataFrame,列'title_from'如下所示 . .

此colume包含一个句子,我想将此列转换为Array [String] . 我尝试过类似的东西,但它不起作用 .

val newDF = df.select("title_from").map(x => x.split("\\\s+")

我怎样才能做到这一点?如何将字符串的datafram转换为Array [string]的数据帧?我希望evD的newDF行是来自df的单词数组 .

谢谢你的帮助!

2 回答

  • -2

    您可以使用 withColumn 功能 .

    import org.apache.spark.sql.functions._
    val newDF = df.withColumn("split_title_from", split(col("title_from"), "\\s+"))
                  .select("split_title_from")
    
  • 0

    您可以尝试按照获取所有作者的列表

    scala> val df = Seq((1,"a1,a2,a3"), (2,"a1,a4,a10")).toDF("id","author")
    df: org.apache.spark.sql.DataFrame = [id: int, author: string]
    
    scala> df.show()
    +---+---------+
    | id|   author|
    +---+---------+
    |  1| a1,a2,a3|
    |  2|a1,a4,a10|
    +---+---------+
    
    
    scala> df.select("author").show
    +---------+
    |   author|
    +---------+
    | a1,a2,a3|
    |a1,a4,a10|
    +---------+
    
    scala> df.select("author").flatMap( row => { row.get(0).toString().split(",")}).show()
    +-----+
    |value|
    +-----+
    |   a1|
    |   a2|
    |   a3|
    |   a1|
    |   a4|
    |  a10|
    +-----+
    

相关问题