首页 > 解决方案 > 如何在pyspark数据框中使用正则表达式将前导0替换为91

问题描述

在 python 中,我这样做是为了用 91 替换列电话中的前导 0。但是如何在 pyspark 中做到这一点。

con数据框是:

id phone1
1   088976854667
2   089706790002

我想要的输出是

1   9188976854667
2   9189706790002
# Replace leading Zeros in a phone number with 91

con.filter(regex='[_]').replace('^0','385',regex=True)

标签: pyspark

解决方案


您正在寻找regexp_replace函数。这个函数有3个参数:

  1. 列名
  2. 图案
  3. 补充
from pyspark.sql import functions as F
columns = ['id', 'phone1']
vals = [(1, '088976854667'),(2, '089706790002' )]


df = spark.createDataFrame(vals, columns)
df = df.withColumn('phone1', F.regexp_replace('phone1',"^0", "91"))
df.show()

输出:

+---+-------------+ 
| id|       phone1| 
+---+-------------+ 
|  1|9188976854667| 
|  2|9189706790002| 
+---+-------------+

推荐阅读