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

仅拥有各医生的患者列表时如何匹配患者对应医生(Python代码优化)

患者-医生匹配的优化实现方案

核心思路是先将原始txt中的一对多医生-患者关系拆解为一对一映射表,再通过pandas的merge接口直接关联匹配,全程不需要手动写嵌套循环,同时可以避免原实现中字符串模糊匹配可能导致的ID误命中问题。

实现代码

第一步:解析txt生成一对一映射表

import pandas as pd

# 读取原始医生记录txt,按冒号拆分为医生、患者字符串两列
doctors_raw = pd.read_csv("你的记录文件路径.txt", sep=":", header=None, names=["Doctor", "PatientsStr"])

# 拆分患者字符串为列表后展开为每行1个患者,得到精准的一对一映射关系
doc_pat_map = doctors_raw.assign(
    Patient = lambda x: x["PatientsStr"].str.split(",")
).explode("Patient")

# 清理患者ID的多余空格,避免匹配失败
doc_pat_map["Patient"] = doc_pat_map["Patient"].str.strip()

第二步:关联匹配患者列表

如果一个患者仅对应一个医生,直接用左关联即可:

# 你的原始patientsDF需要包含Patient列存储所有唯一患者ID
patientsDF = patientsDF.merge(doc_pat_map[["Doctor", "Patient"]], on="Patient", how="left")

如果存在一个患者对应多个医生的场景,可增加合并步骤:

patientsDF = doc_pat_map.groupby("Patient")["Doctor"].apply(
    lambda x: ",".join(x.dropna())
).reset_index()

方案优势

  • 代码量少,逻辑清晰,避免手动维护循环索引
  • 采用精准匹配,不会出现原实现中find方法把patient123和patient1234误判为匹配的问题
  • 基于pandas矢量化操作实现,数据量较大时运行效率远高于嵌套循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:57:03