PySpark:如何将一列拆分为 3 列

PySpark: How to Split a Column into 3 Columns

我有一个 spark 数据框,如下所示,我想按 space.

将列分成 3 个
+------------+
|        text|
+------------+
|  aaa bb ccc|
+------------+
|  aaa bb c d|
+------------+
|        aa b|
+------------+

以下是预期结果。第一项保留在 text1 列中,第二项进入 text2,其余全部进入 text3(如果有)。原始列值可以有空记录或具有任意数量拆分器的值,即 space、" ".

+------------+-----+-----+-----+
|        text|text1|text2|text3|
+------------+-----+-----+-----+
|  aaa bb ccc| aaa | bb  | ccc |
+------------+-----+-----+-----+
|  aaa bb c d| aaa | bb  | c d |
+------------+-----+-----+-----+
|        aa b| aa  | b   | null|
+------------+-----+-----+-----+
|        aa  | aa  |null | null|
+------------+-----+-----+-----+
|            | null|null | null|
+------------+-----+-----+-----+

提前致谢!

您可以使用split函数。

arr_cols = [F.split('text', ' ', 3)[i].alias('text' + str(i+1)) for i in range(3)]
df = df.select('text', *arr_cols)
df.show(truncate=False)