regexp_replace 在 PySpark 上用于两列
regexp_replace on PySpark used on two columns
我想在 PySpark 中基于两列执行非典型 regexp_replace:我在一个属性中有地址,在另一个属性中有城市,我想使用城市属性将其删除从地址,什么时候出现。我写了一个函数来做到这一点:
df = spark.createDataFrame(
[
(1, 'hügelstrasse 34, ansbach', 'ansbach'),
(2, 'panton st. 2, london', 'london')
],
('id', 'address', 'city')
)
def dropCityAddress(street, city):
new = regexp_replace(street, city, '')
return(new)
df.withColumn('newaddress', dropCityAddress(col('address'), col('city')))
但是城市对象是不可迭代的。
所需的输出将是地址中没有城市的新列(我对逗号或其他内容不感兴趣,只是删除城市)。我将在大型数据库上执行此任务,因此基于收集操作之类的解决方案不适合此问题。
有没有办法执行这个任务?
检查下面的代码。
df.withColumn("newaddress",expr("regexp_replace(address,city,'')")).show(false)
+---+------------------------+-------+-----------------+
|id |address |city |newaddress |
+---+------------------------+-------+-----------------+
|1 |hügelstrasse 34, ansbach|ansbach|hügelstrasse 34, |
|2 |panton st. 2, london |london |panton st. 2, |
+---+------------------------+-------+-----------------+
我想在 PySpark 中基于两列执行非典型 regexp_replace:我在一个属性中有地址,在另一个属性中有城市,我想使用城市属性将其删除从地址,什么时候出现。我写了一个函数来做到这一点:
df = spark.createDataFrame(
[
(1, 'hügelstrasse 34, ansbach', 'ansbach'),
(2, 'panton st. 2, london', 'london')
],
('id', 'address', 'city')
)
def dropCityAddress(street, city):
new = regexp_replace(street, city, '')
return(new)
df.withColumn('newaddress', dropCityAddress(col('address'), col('city')))
但是城市对象是不可迭代的。 所需的输出将是地址中没有城市的新列(我对逗号或其他内容不感兴趣,只是删除城市)。我将在大型数据库上执行此任务,因此基于收集操作之类的解决方案不适合此问题。
有没有办法执行这个任务?
检查下面的代码。
df.withColumn("newaddress",expr("regexp_replace(address,city,'')")).show(false)
+---+------------------------+-------+-----------------+
|id |address |city |newaddress |
+---+------------------------+-------+-----------------+
|1 |hügelstrasse 34, ansbach|ansbach|hügelstrasse 34, |
|2 |panton st. 2, london |london |panton st. 2, |
+---+------------------------+-------+-----------------+