scala - 关于如何拆分一列的操作

时间:2018-02-08 05:38:58

标签: string scala apache-spark dataframe split

例如:有一个数据框,如:

val df2 = sc.parallelize(List((1, "A|B"), (1, "C|D"), (2, "E|A"), (2, "S|D")))
.toDF("key1","key2")

现在我要拆分列" key2"到两列。结果的每一行都将显示如下:

1 "A" "B"

我应该编码什么? THX!

1 个答案:

答案 0 :(得分:2)

您可以将key2列拆分为|,然后将每个元素映射到新列。您可以尝试以下代码,

df2.withColumn("key",split($"key2","\\|")).select(
      $"key1",
      $"key".getItem(0).as("key2"),
      $"key".getItem(1).as("key3")
    ).show()

// output
// +----+----+----+
// |key1|key2|key3|
// +----+----+----+
// |   1|   A|   B|
// |   1|   C|   D|
// |   2|   E|   A|
// |   2|   S|   D|
// +----+----+----+