如何在 pyspark 数据框中拆分数字并添加连字符?

wok*_*ter 3 split dataframe apache-spark apache-spark-sql pyspark

我想拆分一列中的所有数字。

数字: 123456789012

成为 123-4567890-12

-所以我想在位置 4 和 10 处添加。

我不想创建新专栏

bla*_*hop 8

您可以使用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|
#+--------------+
Run Code Online (Sandbox Code Playgroud)


mck*_*mck 5

您可以使用对字符串进行切片,并使用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|
+--------------+
Run Code Online (Sandbox Code Playgroud)