我正在尝试使用PySpark从列中提取正则表达式模式.我有一个包含正则表达式模式的数据框,然后有一个包含我要匹配的字符串的表.
columns = ['ID','text']vals = [ (1,'here is a Match1'),(2,'Do not match'),(3,'Match2 is another example'),(4,(5,'here is a Match1')]df_to_extract = sql.createDataFrame(vals,columns)columns = ['ID','Regex','Replacement']vals = [(1,'Match1','Found1'),'Match2','Found2'),]df_regex = sql.createDataFrame(vals,columns)
我想匹配“ df_to_extract”的“文本”列中的“正则表达式”列.我想针对每个ID提取术语,并在结果表中包含ID和与“ Regex”相对应的“替换”.例如:
+---+------------+| ID| replacement|+---+------------+| 1| Found1|| 3| Found2|| 5| Found1|+---+------------+
谢谢!最佳答案一种方法是在加入条件下使用pyspark.sql.functions.expr
,它允许您将use a column value as a parameter设置为0.
例如:
from pyspark.sql.functions import exprdf_to_extract.alias("e")\ .join( df_regex.alias("r"),on=expr(r"e.text liKE concat('%',r.Regex,'%')"),how="inner" )\ .select("e.ID","r.Replacement")\ .show()#+---+-----------+#| ID|Replacement|#+---+-----------+#| 1| Found1|#| 3| Found2|#| 5| Found1|#+---+-----------+
在这里,我使用了sql表达式:
e.text liKE concat('%','%')
它将连接所有文本行类似于Regex列的行,其中%用作通配符以捕获之前和之后的所有内容. 总结
以上是内存溢出为你收集整理的表之间的PySpark正则表达式匹配 全部内容,希望文章能够帮你解决表之间的PySpark正则表达式匹配 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)