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

前端之家收集整理的这篇文章主要介绍了sql – 如何根据pyspark中的某些条件在列中的每一行前面添加零?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据帧df:
  1. val1 val2 val3
  2. 271 70 151
  3. 213 1 379
  4. 213 3 90
  5. 213 6 288
  6. 20 55 165

我想将此数据框转换为:

  1. val1 val2 val3
  2. 271 70 0151
  3. 213 01 0379
  4. 213 03 0090
  5. 213 06 0288
  6. 020 55 0165

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

解决方法

对于数字类型,您可以使用format_string:
  1. from pyspark.sql.functions import format_string
  2.  
  3. (sc.parallelize([(271,),(20,(3,)])
  4. .toDF(["val"])
  5. .select(format_string("%03d","val"))
  6. .show())
  1. +------------------------+
  2. |format_string(%03d,val)|
  3. +------------------------+
  4. | 271|
  5. | 020|
  6. | 003|
  7. +------------------------+

对于字符串lpad:

  1. from pyspark.sql.functions import lpad
  2.  
  3. (sc.parallelize([("271",("20",("3",)])
  4. .toDF(["val"])
  5. .select(lpad("val",3,"0"))
  6. .show())
  1. +---------------+
  2. |lpad(val,0)|
  3. +---------------+
  4. | 271|
  5. | 020|
  6. | 003|
  7. +---------------+

猜你在找的MsSQL相关文章