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

批量查找替换咨询:能否通过替换表实现医院名称标准化修正?

嘿,手动反复做查找替换确实太折磨人了,尤其是数据量一大,不仅费时间还容易漏改或者改错。针对你要修正15家医院名称的需求,我给你几个不同工具场景下的高效解决方案,你可以根据自己平时用的工具来选:

方案1:Excel/Google Sheets 自定义函数(一劳永逸)

如果你的数据在Excel或Google Sheets里,最省心的方式是做一个名称映射表+自定义函数,以后要更新规则直接改映射表就行:

步骤:

  1. 先在工作表里建一个映射表(比如单独开个Sheet),A列放需要匹配的关键词(比如Princesa、La Paz),B列放对应的正确全称(Hospital La Princesa、Hospital La Paz),把15家医院都列进去。
  2. 用自定义函数批量替换:
    • Excel:按Alt+F11打开VBA编辑器,插入一个模块,粘贴下面的代码:
      Function FixHospital(inputName As String) As String
          ' 创建映射字典
          Dim nameDict As Object
          Set nameDict = CreateObject("Scripting.Dictionary")
          
          ' 从映射表加载规则(假设映射表在Sheet2,A2:B16是15家医院的规则)
          Dim i As Integer
          For i = 2 To 16
              nameDict(Sheet2.Cells(i, 1).Value) = Sheet2.Cells(i, 2).Value
          Next i
          
          ' 遍历匹配关键词,找到就替换
          Dim key As Variant
          For Each key In nameDict.Keys
              If InStr(1, inputName, key, vbTextCompare) > 0 Then
                  FixHospital = nameDict(key)
                  Exit Function ' 找到匹配就返回,避免多关键词冲突
              End If
          Next key
          
          ' 没匹配到就返回原内容
          FixHospital = inputName
      End Function
      
      回到Excel,在主表的空白列输入=FixHospital(B2)(假设B列是原医院名称),下拉填充就能得到修正后的名称,之后可以把公式结果转成值替换原列。
    • Google Sheets:点击「扩展程序→Apps Script」,粘贴下面的代码:
      function FIXHOSPITAL(inputName) {
          // 从映射表获取规则(假设映射表在Sheet2,A2:B16)
          const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
          const mapData = sheet.getRange("A2:B16").getValues();
          const nameMap = new Map(mapData);
          
          // 遍历匹配
          for (const [key, value] of nameMap) {
              if (inputName.includes(key)) {
                  return value;
              }
          }
          return inputName;
      }
      
      保存后回到表格,输入=FIXHOSPITAL(B2)即可批量替换。
方案2:Python 批量处理(适合超大量数据/数据库)

如果你的数据存在CSV、Excel或者数据库里,用Python的pandas库可以快速批量处理,代码写一次以后直接改映射规则就行:

import pandas as pd

# 读取数据(如果是数据库可以用sqlalchemy连接,这里以CSV为例)
df = pd.read_csv("患者主表.csv")

# 定义医院名称映射字典,把15家都加进去
hospital_map = {
    "Princesa": "Hospital La Princesa",
    "La Paz": "Hospital La Paz",
    # 示例:"San Carlos": "Hospital San Carlos",
    # 继续添加其他医院...
}

# 自定义替换函数
def replace_hospital_name(name):
    for key, correct_name in hospital_map.items():
        if key in str(name):  # 处理空值情况
            return correct_name
    return name

# 应用替换到医院列
df["医院名称"] = df["医院名称"].apply(replace_hospital_name)

# 保存修正后的数据(如果是数据库就用df.to_sql写入)
df.to_csv("修正后患者主表.csv", index=False)

这个方法适合几万甚至几十万行的大数据,运行一次就能搞定,而且映射规则可以随时在字典里修改扩展。

方案3:Power Query(Excel可视化操作,不用写代码)

如果你不想碰代码,Excel的Power Query工具也能搞定,适合可视化操作:

  1. 把主表数据导入Power Query:点击「数据→从表格/区域」,确认数据有表头后加载。
  2. 加载映射表:同样把你做好的关键词-正确名称映射表导入Power Query,选择「仅创建连接」。
  3. 合并查询:在主表的Power Query编辑器里,点击「合并查询→合并查询作为新查询」,选择映射表,连接类型选「左外部」,然后在合并条件里,主表选医院名称列,映射表选关键词列,点击「高级选项」,匹配类型选「包含」,确定。
  4. 替换名称:展开合并后的列,只选择正确名称列,然后添加自定义列,输入=if [正确名称] <> null then [正确名称] else [原医院名称列],删除原列和多余的列。
  5. 加载回Excel:点击「关闭并上载」,就能得到修正后的表格。

小提示:

  • 注意映射规则的优先级,如果有医院名称包含多个关键词(比如La Paz Norte和La Paz),要把更具体的关键词放在映射表的前面,避免被笼统的关键词先匹配。
  • 测试的时候先拿一小部分数据验证替换结果,没问题再批量处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:46:32