使用字符串包含来标记字符串中的确切单词

时间:2020-08-18 15:44:38

标签: python pandas

我有一个看起来像这样的数据集:

ID Symptoms
1  ear, fever
2  hearing loss
3  hurt ear
4  spear wound
5  bad hearing  
6  earring cut

我只希望标记“ ear”出现的记录。因此,例如,输出将如下所示:

ID Symptoms         Ear
1  ear, fever        1
2  hearing loss      0
3  hurt ear          1
4  spear wound       0
5  bad hearing       0 
6  earring cut       0

我尝试了一些代码,但收效甚微:

问题:此代码将提取带有“ ear”文本的任何内容

LABS_TAT.loc[:,"Ear"]=np.where(LABS_TAT["Symptoms"].str.contains("ear", case=False),1,0)

注意“ ear”之后的空格,此代码不会标记“ hurt ear”记录

 LABS_TAT.loc[:,"Ear"]=np.where(LABS_TAT["Symptoms"].str.contains("ear ", case=False),1,0)

请注意“耳朵”前的空格,该代码不会标记“耳朵发烧”记录

 LABS_TAT.loc[:,"Ear"]=np.where(LABS_TAT["Symptoms"].str.contains(" ear", case=False),1,0)

如何修复我的代码,使其标记带有“ ear”一词的所有记录?我觉得这里有一个简单的答案,但我还是python的新手。

2 个答案:

答案 0 :(得分:1)

Series.str.contains与正则表达式一起使用:

dic

结果:

df['Ear'] = df['Symptoms'].str.contains(r'(?i)\bear\b').astype(int)

答案 1 :(得分:1)

由于.contains()采用了正则表达式模式,因此应该像.contains(r"\bear\b", case=False)一样简单。

\b表示单词限制字符。您可以在Python standard library documentation中了解有关正则表达式的更多信息。