例如:有一个数据框,如:
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!
答案 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|
// +----+----+----+