如何在pysparkDataframe中拆分数字并添加连字符?

tp5buhyn  于 2021-07-13  发布在  Spark
关注(0)|答案(2)|浏览(321)

我想把所有的数字分成一列。
编号: 123456789012 成为 123-4567890-12 所以我想补充一下 - 在位置4和10。
我不想创建新列

cu6pst1q

cu6pst1q1#

你可以用 regexp_replace :

from pyspark.sql import functions as F

df1 = df.withColumn(
    "number",
    F.regexp_replace(F.col("number"), "(\\d{3})(\\d{7})(\\d+)", "$1-$2-$3")
)

df1.show()

# +--------------+

# |        number|

# +--------------+

# |123-4567890-12|

# +--------------+
ar5n3qh5

ar5n3qh52#

可以使用 substring 用分离器把它们结合起来 '-' 使用 concat_ws :

import pyspark.sql.functions as F

df2 = df.withColumn(
    'number', 
    F.expr("""
        concat_ws(
            '-',
            substring(number, 1, 3),
            substring(number, 4, 7),
            substring(number, 11, length(number))
       )
    """)
)

df2.show()
+--------------+
|        number|
+--------------+
|123-4567890-12|
+--------------+

相关问题