要求:需要填充前綴為 000 的 4 位行號
示例: 0001,0002.....0011,0012
在這里,我根據行數值的長度(即列中)重復零到前綴的數量 PAGENO
df.select(F.repeat(F.lit(0), 3))
值 3 需要根據行號值動態更改。
我實作動態0復制的想法:
df.select(F.repeat(F.lit(0),(4 - F.length(df["PAGENO"]))))
得到錯誤:
“列”物件不可呼叫
當傳遞任何列或引數而不是數字 3 時,重復次數不應該起作用。
uj5u.com熱心網友回復:
您可以在 SQL 運算式中使用它:
df.select(F.expr("repeat(0, length(PAGENO))")).show()
但是,如果我正確理解了您的問題,您想使用lpad函式。下面是一個例子:
df = spark.createDataFrame([(1,), (2,), (10,), (12,), (11,)], ["PAGENO"])
df1 = df.withColumn("PAGENO_2", F.expr("lpad(PAGENO, 4, '0')"))
df1.show()
# ------ --------
#|PAGENO|PAGENO_2|
# ------ --------
#| 1| 0001|
#| 2| 0002|
#| 10| 0010|
#| 12| 0012|
#| 11| 0011|
# ------ --------
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374913.html
標籤:Python 阿帕奇火花 火花 apache-spark-sql
