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

如何通过前缀匹配从FullPostcodes更新PostcodeSector列数据

匹配英国邮政编码区段到完整邮政编码的解决方案

以下针对不同常用工具提供实现方案,满足将邮政编码区段替换为对应匹配的完整邮政编码需求:

Excel 解决方案

如果使用Excel 365或2021,可直接用XLOOKUP函数实现前缀匹配并返回首个完整邮编:

  1. 假设你的区段数据在Sheet1的A列(A2开始为数据行),完整邮编数据在Sheet2的B列
  2. 在Sheet1的B2单元格输入公式:
    =XLOOKUP(A2&"*", Sheet2!$B:$B, Sheet2!$B:$B, "无匹配", 2)
    
  3. 下拉填充公式后,将B列结果复制粘贴回A列替换原区段数据

若使用旧版Excel,改用INDEX+MATCH组合:

=INDEX(Sheet2!$B:$B, MATCH(A2&"*", Sheet2!$B:$B, 0))

注:MATCH函数中的0参数会返回首个前缀匹配的结果,若需处理无匹配的情况,可嵌套IFERROR:=IFERROR(INDEX(...), "无匹配")

Python Pandas 解决方案

通过数据帧处理实现批量匹配:

  1. 导入并读取两个数据集:
    import pandas as pd
    
    # 读取区段数据
    sector_df = pd.read_excel("你的区段文件.xlsx")
    # 读取完整邮编数据
    full_df = pd.read_excel("FullPostcodes.xlsx")
    
  2. 生成区段到完整邮编的映射表(保留每个区段的首个匹配):
    # 从完整邮编中提取区段前缀
    full_df["sector_prefix"] = full_df["Postcode"].str.extract(r"^(\w+\s\d)")
    # 去重,保留每个区段的第一条完整邮编
    sector_map = full_df.drop_duplicates(subset="sector_prefix", keep="first").set_index("sector_prefix")["Postcode"]
    
  3. 替换原区段列:
    sector_df["PostcodeSector"] = sector_df["PostcodeSector"].map(sector_map)
    # 保存结果
    sector_df.to_excel("更新后的区段数据.xlsx", index=False)
    

SQL 解决方案

假设你使用的是SQL Server,若为其他数据库(如MySQL、PostgreSQL)只需调整TOP 1为对应语法(如LIMIT 1):

-- 更新区段表的PostcodeSector列为匹配的首个完整邮编
UPDATE SectorTable
SET PostcodeSector = (
    SELECT TOP 1 Postcode
    FROM FullPostcodes
    WHERE Postcode LIKE SectorTable.PostcodeSector + '%'
)
-- 仅更新存在匹配的行
WHERE EXISTS (
    SELECT 1
    FROM FullPostcodes
    WHERE Postcode LIKE SectorTable.PostcodeSector + '%'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:01:48