pyspark - 如何在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)
解决方案
您正在寻找regexp_replace函数。这个函数有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|
+---+-------------+