通过查找字符串列中的确切单词(未组合)来过滤DataFrame

发布于 2021-01-29 14:09:56

我的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过滤条件以实现此目的?而如何实现startswithendswith“良好”(确切的词搜索)?

关注者
0
被浏览
148
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果您将“精确”定义为没有其他字符(包括定义单词边界的标点符号\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)或字符串的开头(^)。

    • Good 是您要查找的词。

    • (?:\s|$)是一个非捕获组,在其中寻找空格字符(\s)或字符串的结尾($)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看