wok*_*ter 3 split dataframe apache-spark apache-spark-sql pyspark
我想拆分一列中的所有数字。
数字: 123456789012
成为 123-4567890-12
-所以我想在位置 4 和 10 处添加。
我不想创建新专栏
您可以使用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)
您可以使用对字符串进行切片,并使用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)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |