You need to enable JavaScript to run this app. pandas药物数据挖掘:如何筛选包含而非完全匹配目标术语的记录
优惠活动
大模型
产品
解决方案
定价
更多

pandas药物数据挖掘:如何筛选包含而非完全匹配目标术语的记录

实现包含目标术语的药物记录筛选

原代码存在的不足

  • 采用==做字段值精确匹配,仅能命中Drug Name字段值完全等于OLMESARTAN的记录,无法覆盖OLMESARTAN MEDOXOMIL、复方制剂中携带该成分名的各类变体
  • 存在冗余实现:逐行手动拆分文本转tuple、重复初始化DataFrame、手动调用文件close方法,拉低运行效率且易触发异常

可直接运行的优化代码

import pandas as pd

# 读取$分隔的结构化文件,仅加载业务需要的列降低内存占用
drug_df = pd.read_csv(
    'DRUG20Q4.txt',
    sep='$',
    header=None,
    dtype=str,
    usecols=[0, 3, 5],
    names=['PrimaryID', 'Role', 'Drug Name']
)

# 筛选Drug Name字段包含目标术语的全部记录
target_df = drug_df[
    drug_df['Drug Name'].str.contains(
        pat='OLMESARTAN',
        case=False,  # 忽略大小写差异,覆盖样例中"Olmesartan"这类大小写变体
        na=False  # 对空值直接过滤,避免空值触发匹配报错
    )
]

实用优化提示

  • 该匹配逻辑可自动覆盖所有Drug Name字段内嵌入目标术语的记录,不需要手动穷举各类药物名称变体
  • 若需避免误匹配拼写相近的无关字符串,可将匹配规则调整为带单词边界的正则:pat=r'\bOLMESARTAN\b',仅匹配独立成词的目标术语
  • with上下文管理器会自动在代码块执行完成后关闭文件流,原代码中手动书写的fileDrug20Q4.close()属于冗余代码,建议移除
  • 原代码中两次嵌套初始化DataFrame的写法属于冗余操作,可直接为筛选结果赋值,不需要反复调用DataFrame构造器

内容的提问来源于stack exchange,提问作者Stephen Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 22:06:02