我们有一个 pyspark 数据框,其中有多个列,其中包含具有多个值的数组。我们的目标是将这些列的每个值放在几行中,并保留初始的不同列。所以,从这样的事情开始:
data = [
("A", ["a", "c"], ["1", "5"]),
("B", ["a", "b"], None),
("C", [], ["1"]),
]
Run Code Online (Sandbox Code Playgroud)
什么是:
+---+------+------+
|id |list_a|list_b|
+---+------+------+
|A |[a, c]|[1, 5]|
|B |[a, b]|null |
|C |[] |[1] |
+---+------+------+
Run Code Online (Sandbox Code Playgroud)
我们希望最终得到:
+---+----+----+
|id |col |col |
+---+----+----+
|A |a |null|
|A |c |null|
|A |null|1 |
|A |null|5 |
|B |a |null|
|B |b |null|
|C |null|1 |
+---+----+----+
Run Code Online (Sandbox Code Playgroud)
我们正在考虑几种方法:
但所有这些方法都给人一种肮脏、复杂、容易出错且低效的解决方案的感觉。
有谁知道如何以优雅的方式解决这个问题?