[英]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.