python - Pyspark 在另一列中的一列中查找模式
问题描述
我有一个包含两列地址和街道名称的数据框。
from pyspark.sql.functions import *
import pyspark.sql
df = spark.createDataFrame([\
['108 badajoz road north ryde 2113, nsw, australia', 'north ryde'],\
['25 smart street fairfield 2165, nsw, australia', 'smart street']
],\
['address', 'street_name'])
df.show(2, False)
+------------------------------------------------+---------------+
|address |street_name |
+------------------------------------------------+---------------+
|108 badajoz road north ryde 2113, nsw, australia|north ryde |
|25 smart street fairfield 2165, nsw, australia |smart street |
+------------------------------------------------+---------------+
我想查找是否street_name
存在address
并在新列中返回布尔值。我可以像下面那样手动搜索模式。
df.withColumn("new col", col("street").rlike('.*north ryde.*')).show(20,False)
----------------------------------------------+---------------+-------+
|address |street_name |new col|
+------------------------------------------------+------------+-------+
|108 badajoz road north ryde 2113, nsw, australia|north ryde |true |
|25 smart street fairfield 2165, nsw, australia |smart street|false |
+------------------------------------------------+------------+-------+
但我想用street_name
下面的列替换手动值
df.withColumn("new col", col("street")\
.rlike(concat(lit('.*'),col('street_name'),col('.*))))\
.show(20,False)
解决方案
你可以通过简单地使用contains
函数来做到这一点。有关更多详细信息,请参阅此:
from pyspark.sql.functions import col, when
df = df.withColumn('new_Col',when(col('address').contains(col('street_name')),True).otherwise(False))
df.show(truncate=False)
+------------------------------------------------+------------+-------+
|address |street_name |new_Col|
+------------------------------------------------+------------+-------+
|108 badajoz road north ryde 2113, nsw, australia|north ryde |true |
|25 smart street fairfield 2165, nsw, australia |smart street|true |
+------------------------------------------------+------------+-------+
推荐阅读
- python - 从当前目录导入许多包的最 Pythonic 方式是什么?
- jquery - net::ERR_HTTP2_PROTOCOL_ERROR 在 IIS 10 上使用 jquery XMLHttpRequest 和 HTTP2
- java - 在drools动作规则xlsx文件中添加多个参数
- javascript - 异常的 HTML 音频竞争条件
- graph-algorithm - 计算有根 DAG 中最大路径等效节点的类
- java - 如何在 Android Studio 中创建 UML?
- python - 额外的窗口 jupyter notebook matplotlib 动画
- python - Python:嵌套 if SyntaxError:无效语法
- sql - WHERE 子句中的优化似乎不适用于 UNION
- xml - XSL/FO 在选择语句中跳过一个值