如何在pandas str.contains中使用单词边界?

问题描述 投票:0回答:2

使用 str.contains 时是否有等效的?

以下代码由于“Sa”而错误地将“Said Business School”列在类别中。如果我能创建一个 wordboundary 就可以解决问题。在后面加一个空格会搞砸。我正在使用 pandas,即 dfs。我知道我可以使用正则表达式,但只是好奇我是否可以使用字符串来使其更快

gprivate_n = ('Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation')
df.loc[df[df.Name.str.contains('{0}'.format(gprivate_n))].index, "Private"] = 1 
python regex string pandas word-boundary
2个回答
7
投票

这与正则表达式中的旧 Python 问题相同,其中

'\b'
应作为 raw-string
r'\b...'
传递。或者不太理想的是,将其双重转义为 (
'\\b'
)。

所以你的正则表达式应该是:

gprivate_n = (r'\b(Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation)')

-1
投票

单词边界不是字符,因此您无法使用

.contains
找到它。您需要使用正则表达式或将字符串拆分为单词,然后检查您当前在
gprivate_n
中定义的集合中每个单词的成员资格。

© www.soinside.com 2019 - 2024. All rights reserved.