【问题标题】:how to add leading zeroes to a pyspark dataframe column如何将前导零添加到 pyspark 数据框列
【发布时间】:2019-09-17 21:40:56
【问题描述】:

我正在尝试在我的 pyspark 数据框中的列中添加前导零

输入:-

身份证 123

预期输出:

000000000123

【问题讨论】:

标签: pyspark


【解决方案1】:

有lpad功能。 用 pad 将字符串列左填充到宽度 len。

from pyspark.sql.functions import lpad
df.select(lpad(df.ID, 12, '0').alias('s')).collect()

【讨论】:

    【解决方案2】:

    使用format_string 函数在开头填充零。

    from pyspark.sql.functions import col, format_string
    df = spark.createDataFrame([('123',),('1234',)],['number',])
    df.show()
    +------+
    |number|
    +------+
    |   123|
    |  1234|
    +------+
    

    如果号码是string,请务必将其转换为integer

    df = df.withColumn('number_padded', format_string("%012d", col('number').cast('int')))
    df.show()
    +------+-------------+
    |number|number_padded|
    +------+-------------+
    |   123| 000000000123|
    |  1234| 000000001234|
    +------+-------------+
    

    【讨论】:

    • 我应用了这个逻辑,但没有创建一个新列“number_padded”
    • 我完全按照你说的做了,但是新栏目没有形成
    • 好吧,我进行了下一步,生成了新列,但其中包含所有空值。看起来逻辑不起作用。
    • 它适用于我的多个 pyspark 版本。我不知道为什么它对你不起作用。
    • 这个解决方案效果更好,更健壮。这应该是公认的答案
    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多