小编Sha*_*iff的帖子

通过正则表达式捕获组拆分火花数据帧列中的字符串

鉴于以下数据框,我想将数字列拆分为数组中每个原始数字元素的 3 个字符的数组

给定数据框:

+---+------------------+
| id|           numbers|
+---+------------------+
|742|         000000000|
|744|            000000|
|746|003000000000000000|
+---+------------------+
Run Code Online (Sandbox Code Playgroud)

预期数据框:

+---+----------------------------------+
| id|           numbers                |
+---+----------------------------------+
|742| [000, 000, 000]                  |
|744| [000, 000]                       |
|746| [003, 000, 000, 000, 000, 000]   |
+---+----------------------------------+
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的正则表达式,同时使用split下面给出的函数和我认为应该在第一次尝试时就可以使用的正则表达式:

import pyspark.sql.functions as f

df = spark.createDataFrame(
    [
        [742, '000000000'], 
        [744, '000000'], 
        [746, '003000000000000000'], 
    ],
    ["id", "numbers"]
)

df = df.withColumn("numbers", f.split("numbers", "[0-9]{3}"))

df.show()
Run Code Online (Sandbox Code Playgroud)

然而结果是

+---+--------------+
| id|       numbers|
+---+--------------+
|742|      [, , , ]|
|744|        [, …
Run Code Online (Sandbox Code Playgroud)

python-3.x apache-spark apache-spark-sql pyspark

2
推荐指数
1
解决办法
8156
查看次数