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)
我有一个 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)