繁体   English   中英

pyspark字符串匹配多个精确单词正则表达式的高效方式

[英]pyspark string match multiple exact words regular expression efficient way

有一个 pyspark 数据框,其中一列title都是字符串。 需要找到包含以下任何单词列表['Cars','Car','Vehicle','Vehicles'] 需要过滤以仅从该列表中查找仅包含单词的行。 这样做的一种方法是:

filter_1 = "title like '%{}' or title like '%{}' or title like '%{}' or title like '%{}'"\
    .format('Car','Cars','Vehicle','Vehicles')
    
df1 = df.filter(filter_1).select('id','title')

这不是一种简洁的写作方式。 尝试使用正则表达式:

df2 = df.where('title rlike "\bCars?\b|\bVehicles?\b"').select('id','title')

只需要匹配精确的单词,如“Car”而不是“sCar”或“Carry”。 但 df2 是空的。

还尝试了如何有效地检查 Spark 数据帧中是否包含单词列表? 还有一些额外的字符串,如“sCar”或“Carry”。 有什么建议么?

使用 where 过滤 df。 为此,请使用|加入搜索词|

s='|'.join(["(" + c +")" for c in l])
df.where(df['title'].rlike(s)).show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM