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

Dataframe 如何在pyspark数据帧中拆分数字并添加连字符?,dataframe,apache-spark,pyspark,split,apache-spark-sql,Dataframe,Apache Spark,Pyspark,Split,Apache Spark Sql,我想把所有的数字分成一列 编号:123456789012 将成为123-4567890-12 所以我想在位置4和10添加- 我不想创建新列您可以使用子字符串对字符串进行切片,并使用concat\ws将它们与分隔符'-'组合起来: import pyspark.sql.functions as F df2 = df.withColumn( 'number', F.expr(""" concat_ws( '-'

我想把所有的数字分成一列

编号:
123456789012

将成为
123-4567890-12

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


我不想创建新列

您可以使用
子字符串
对字符串进行切片,并使用
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|
+--------------+
您可以使用:

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|
#+--------------+