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

如何用Pandas实现大小写不敏感的加拿大省份全称到缩写映射

方案合理性评估

你当前的实现功能上是完全可用的,但性能存在可优化空间:

  • 每处理一行数据都要遍历整个加拿大省份字典的所有键,数据量达到十万、百万级时,时间开销会线性上涨
  • 每次匹配都重复将字典键转小写,属于冗余计算,可以提前预处理避免

更高效的实现方式

提前预处理出统一小写键的映射字典,搭配pandas向量化操作替代逐行apply,性能提升非常明显,数据量越大优势越突出:

import pandas as pd

# 原省份映射字典
ca_provinces_dic = {
    'Newfoundland and Labrador': 'NL',
    'Prince Edward Island': 'PE',
    'Nova Scotia': 'NS',
    'New Brunswick': 'NB',
    'Quebec': 'QC',
    'Ontario': 'ON',
    'Manitoba': 'MB',
    'Saskatchewan': 'SK',
    'Alberta': 'AB',
    'British Columbia': 'BC',
    'Yukon': 'YT',
    'Northwest Territories': 'NT',
    'Nunavut': 'NU',
}

# 仅预处理一次:生成小写键的映射字典
lower_ca_map = {k.strip().lower(): v for k, v in ca_provinces_dic.items()}

# 向量化处理:先统一列值格式,再用O(1)的字典查询匹配,未匹配的保留原值
df['province'] = df['province'].str.strip().str.lower().map(lower_ca_map).fillna(df['province'])

如果列中存在空值或非字符串类型的值,可以加一步类型转换避免报错:

df['province'] = df['province'].astype(str).str.strip().str.lower().map(lower_ca_map).fillna(df['province'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03