python - 使用 Pandas 仅将 str.contains 与整个单词一起使用
问题描述
考虑:
array = ['... , '...' , '.... ' ,....]
results = df[df['Message'].str.contains('|'.join(array)).fillna(False)]
我们如何强制str.contains
只使用数组中的整个单词?
解决方案
您需要包装所有单词 (w1|w2|w3) 以匹配数组中的任何单词。\b
然后在两边添加一个单词边界 ,并带有转义符。
pattern = '\\b(' + '|'.join(arr) + ')\\b'
df[df['Message'].str.contains(pattern).fillna(False)]
现在,由于我添加了 extract group ()
, contains 将产生警告。
UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
要处理此警告,请更改contains
为match
。
df[df['Message'].str.match(pattern).fillna(False)]