填充Pyspark数据帧

rup*_*das 3 pyspark spark-dataframe

我有一个Pyspark数据帧(原始数据帧)具有以下数据(所有列都有字符串数据类型):

  id           Value
   1             103
   2             1504
   3              1  
Run Code Online (Sandbox Code Playgroud)

我需要在value列中创建一个带有padding的新修改数据帧,这样该列的长度应为4个字符.如果length小于4个字符,则在数据中添加0,如下所示:

  id             Value
   1             0103
   2             1504
   3             0001  
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?如何使用Pyspark数据框实现它?任何帮助将不胜感激.

Sur*_*esh 11

你可以使用功能模块中的lpad,

from pyspark.sql.functions import lpad
>>> df.select('id',lpad(df['value'],4,'0').alias('value')).show()
+---+-----+
| id|value|
+---+-----+
|  1| 0103|
|  2| 1504|
|  3| 0001|
+---+-----+
Run Code Online (Sandbox Code Playgroud)


ucs*_*sky 9

lpad结合使用 PySpark函数withColumn

import pyspark.sql.functions as F
dfNew = dfOrigin.withColumn('Value', F.lpad(dfOrigin['Value'], 4, '0')) 
Run Code Online (Sandbox Code Playgroud)