python pandas.Series.str.contains WHOLE WORD

Aer*_*rin 5 python regex dataframe pandas

df(Pandas Dataframe)有三行.

col_name
"This is Donald."
"His hands are so small"
"Why are his fingers so short?"
Run Code Online (Sandbox Code Playgroud)

我想提取包含"是"和"小"的行.

如果我做

df.col_name.str.contains("is|small", case=False)
Run Code Online (Sandbox Code Playgroud)

然后它也抓住了"他的" - 这是我不想要的.

以下查询是在df.series中捕获整个单词的正确方法吗?

df.col_name.str.contains("\bis\b|\bsmall\b", case=False)
Run Code Online (Sandbox Code Playgroud)

Lau*_*rel 7

不,正则表达式/bis/b|/bsmall/b会失败,因为你正在使用/b,而不是\b那意味着"单词边界".

改变这一点,你得到一个匹配.我建议使用

\b(is|small)\b
Run Code Online (Sandbox Code Playgroud)

至少对我来说,正则表达式更快一点,更清晰.