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

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


ID Symptoms

1  ear, fever

2  hearing loss

3  hurt ear

4  spear wound

5  bad hearing  

6  earring cut

我只想标记出现“耳朵”的记录。因此,例如,输出将如下所示:


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)

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


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

我怎样才能修复我的代码,以便它用单词“ear”标记任何记录?我觉得有一个简单的答案,但我对 python 还是有点陌生。


人到中年有点甜
浏览 94回答 2
2回答

汪汪一只猫

Series.str.contains与正则表达式模式一起使用:df['Ear'] = df['Symptoms'].str.contains(r'(?i)\bear\b').astype(int)结果:  ID      Symptoms   Ear0   1    ear, fever    11   2  hearing loss    02   3      hurt ear    13   4   spear wound    04   5   bad hearing    05   6   earring cut    0

GCT1015

由于.contains()采用正则表达式模式,这应该和.contains(r"\bear\b", case=False).\b指示单词边界字符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python