在 PySpark 中为值添加零 [英] Prepend zeros to a value in PySpark

查看:25
本文介绍了在 PySpark 中为值添加零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框 df :

val1   val2  val3
271   70    151
213   1     379
213   3     90
213   6     288
20    55    165

我想将此数据框转换为:

I want to transform this data frame as:

val1   val2  val3
271   70    0151
213   01    0379
213   03    0090
213   06    0288
020   55    0165

我怎样才能在 pyspark 中做到这一点?是否可以使用 Spark SQL 做到这一点?欢迎任何帮助.

How can I do that in pyspark? And is it possible to do it with Spark SQL? Any help is welcome.

推荐答案

对于数字类型,您可以使用 format_string:

For numeric types you can use format_string:

from pyspark.sql.functions import format_string

(sc.parallelize([(271, ), (20, ), (3, )])
    .toDF(["val"])
    .select(format_string("%03d", "val"))
    .show())

+------------------------+
|format_string(%03d, val)|
+------------------------+
|                     271|
|                     020|
|                     003|
+------------------------+

对于字符串lpad:

from pyspark.sql.functions import lpad

(sc.parallelize([("271", ), ("20", ), ("3", )])
    .toDF(["val"])
    .select(lpad("val", 3, "0"))
    .show())

+---------------+
|lpad(val, 3, 0)|
+---------------+
|            271|
|            020|
|            003|
+---------------+

这篇关于在 PySpark 中为值添加零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆