我想把所有的数字分成一列。编号: 123456789012 成为 123-4567890-12 所以我想补充一下 - 在位置4和10。我不想创建新列
123456789012
123-4567890-12
-
cu6pst1q1#
你可以用 regexp_replace :
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| # +--------------+
ar5n3qh52#
可以使用 substring 用分离器把它们结合起来 '-' 使用 concat_ws :
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| +--------------+
2条答案
按热度按时间cu6pst1q1#
你可以用
regexp_replace
:ar5n3qh52#
可以使用
substring
用分离器把它们结合起来'-'
使用concat_ws
: