如何删除小数和零前的数字动态Pypark?

jckbn6z7  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(345)

我有一个pysparkDataframe,我想在 . 我想删除 . 此外,我想在数字前面加零,这样每个数字的长度都是4。
原样:

|270.0            |  
|749.5            |  
|460.0            |  
|90.0             |  
|670.0            |    
|656.6666666666666|  
|1210.0           |

成为:

|0270|  
|0749|  
|0460|  
|0090|  
|0670|  
|0656|  
|1210|

谨致问候,
沃克特

u4vypkhs

u4vypkhs1#

你可以用 format_number + lpad 功能:

from pyspark.sql import functions as F

df1 = df.withColumn(
    "number",
    F.expr("lpad(format_number(number, '####'), 4, '0')")
)

df1.show()

# +------+

# |number|

# +------+

# |  0270|

# |  0750|

# |  0460|

# |  0090|

# |  0670|

# |  0657|

# |  1210|

# +------+

或者 lpad + regexp_replace :

df1 = df.withColumn(
    "number",
    F.lpad(F.regexp_replace("number", "\\.(.*)", ""), 4, '0')
)

相关问题