我的DataFrame有两列:
Name Status a I am Good b Goodness!!! c Good is what i feel d Not Good-at-all
我想过滤其中Status具有字符串“ Good”作为其确切单词的行,而不将其与任何其他单词或字符组合。
因此输出将是:
Name Status a i am Good c Good is what i feel
另外两行中有一个’Good’字符串,但与其他字符混合在一起,因此不应该被选择。
我试着做:
d = df[df['Status'].str.contains('Good')] # But all rows come up
我相信某些正则表达式(r'\bGood\b',Status)会做到这一点,但这无法将其总结在一起。以及如何/在什么地方将正则表达式完全适合DataFrame过滤条件以实现此目的?而如何实现startswith或endswith“良好”(确切的词搜索)?
(r'\bGood\b',Status)
startswith
endswith
如果您将“精确”定义为没有其他字符(包括定义单词边界的标点符号\b),则可以检查前导和尾随空格和/或开始/结束锚点:
\b
>>> df[df['Status'].str.contains(r'(?:\s|^)Good(?:\s|$)')] Name Status 0 a I am Good 2 c Good is what i feel
说明:
(?:\s|^)是一个非捕获组,正在寻找空格字符(\s)或字符串的开头(^)。
(?:\s|^)
\s
^
Good 是您要查找的词。
Good
(?:\s|$)是一个非捕获组,在其中寻找空格字符(\s)或字符串的结尾($)。
(?:\s|$)
$