You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何基于期刊标题完全匹配新建Influential标记列

解决方案

问题原因

你之前使用的方法不符合完全匹配的需求:

  • str.contains()仅校验字符串是否包含目标子串,没有首尾位置限制,因此包含关键词的非目标条目也会被命中
  • str.match()仅校验字符串开头是否匹配目标模式,不限制结尾,同样会匹配到开头符合、整体不符的条目

最优实现方式

不需要强制使用正则,pandas内置的isin()方法专门用于完全匹配列表元素的场景,代码更简洁高效:

# 先定义目标期刊列表
target_journals = [
    "Blood", "Cancer", "Chest", "Circulation", "Diabetes", "JAMA",
    "Endocrinology", "Gastroenterology", "Gut", "Medicine", "Neurology",
    "Pediatrics", "Physical therapy", "Radiology", "Surgery", "Geriatrics"
]
# 直接生成Influential列,匹配成功保留期刊名,不匹配则为NaN
df['Influential'] = df['Title'].where(df['Title'].isin(target_journals))

正则实现方案(可选)

如果需要用正则实现,需要给匹配规则加上开头^和结尾$锚定,确保是完全匹配:

import re
# 构造正则匹配规则,re.escape用于避免期刊名中的特殊字符影响正则逻辑
pattern = r'^(' + '|'.join(re.escape(j) for j in target_journals) + r')$'
# 提取匹配结果
df['Influential'] = df['Title'].str.extract(pattern, expand=False)

两种方法都可以得到你期望的输出结果,优先推荐isin()方案,性能和可读性都更好。

内容的提问来源于stack exchange,提问作者Anakin Skywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:45:03