我有一个数据帧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|
- +---------------+