加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何根据pyspark中的某些条件在列中的每一行前面添加零?

发布时间:2020-12-12 06:02:18 所属栏目:MsSql教程 来源:网络整理
导读:我有一个数据帧df: val1 val2 val3271 70 151213 1 379213 3 90213 6 28820 55 165 我想将此数据框转换为: val1 val2 val3271 70 0151213 01 0379213 03 0090213 06 0288020 55 0165 我怎么能在pyspark做到这一点?是否可以使用Spark SQL?欢迎任何帮助. 解
我有一个数据帧df:
val1   val2  val3
271   70    151
213   1     379
213   3     90
213   6     288
20    55    165

我想将此数据框转换为:

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

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

解决方法

对于数字类型,您可以使用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,0)|
+---------------+
|            271|
|            020|
|            003|
+---------------+

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读