如何将前导零添加到 pyspark 数据框列

Rid*_*hna 4 pyspark

我正在尝试向我的 pyspark 数据框中的列添加前导零

输入 :-

身份证 123

预期输出:

000000000123

cph*_*sto 13

使用format_string函数在开头填充零。

from pyspark.sql.functions import col, format_string
df = spark.createDataFrame([('123',),('1234',)],['number',])
df.show()
+------+
|number|
+------+
|   123|
|  1234|
+------+
Run Code Online (Sandbox Code Playgroud)

如果数字是string,请确保将其投射到integer.

df = df.withColumn('number_padded', format_string("%012d", col('number').cast('int')))
df.show()
+------+-------------+
|number|number_padded|
+------+-------------+
|   123| 000000000123|
|  1234| 000000001234|
+------+-------------+
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案效果更好并且更稳健。这应该是公认的答案 (4认同)

小智 10

有lpad功能。用 pad 将字符串列左填充到宽度 len。

from pyspark.sql.functions import lpad
df.select(lpad(df.ID, 12, '0').alias('s')).collect()
Run Code Online (Sandbox Code Playgroud)