为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2023-06-06 15:45:25
我有一个看起来像这样的数据集:ID Symptoms1  ear, fever2  hearing loss3  hurt ear4  spear wound5  bad hearing  6  earring cut我只想标记出现“耳朵”的记录。因此,例如,输出将如下所示:ID Symptoms         Ear1  ear, fever        12  hearing loss      03  hurt ear          14  spear wound       05  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 还是有点陌生。
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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

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

结果:

  ID      Symptoms   Ear

0   1    ear, fever    1

1   2  hearing loss    0

2   3      hurt ear    1

3   4   spear wound    0

4   5   bad hearing    0

5   6   earring cut    0


查看完整回答
反对 回复 2023-06-06
?
GCT1015

TA贡献1827条经验 获得超4个赞

由于.contains()采用正则表达式模式,这应该和.contains(r"\bear\b", case=False).

\b指示单词边界字符。


查看完整回答
反对 回复 2023-06-06
  • 2 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信