鉴于以下数据框,我想将数字列拆分为数组中每个原始数字元素的 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)