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

如何向GDP数据集中补充缺失的国家代码

GDP数据集缺失国家代码补全解决方案

1. 准备映射数据源

  • 可以直接调用Python内置的pycountry库生成标准国家名称与ISO 2位/3位国家代码的映射表,无需额外下载外部数据集,覆盖绝大多数主权国家和地区。
  • 如果你已持有自定义的完整国家代码数据集,直接读取为结构化表格(如DataFrame)备用即可,确保映射表包含标准国家名称、对应国家代码两个必要字段。

2. 名称标准化与匹配

  • 先对两个数据集的国家名称做统一清洗:全部转为小写、去除特殊符号、去除前后空格、预设别名映射(例如将“United States of America”“US”统一映射为“United States”),大幅提升匹配准确率。
  • 优先做精确匹配,剩余未匹配的条目可使用字符串相似度模糊匹配,Python的fuzzywuzzy库可实现该功能,设置90%及以上的相似度阈值自动匹配,低于阈值的条目单独人工校验即可。

3. 数据补全与校验

  • 匹配完成后将得到的国家代码填充到原GDP数据集的对应缺失位置,注意保留原数据集的行顺序不变。
  • 最终校验:检查补全后的数据是否还有剩余缺失,确认特殊地区的代码规则是否和你现有数据集的规范保持一致。

参考实现代码

import pandas as pd
import pycountry
from fuzzywuzzy import fuzz

# 读取原GDP数据集
gdp_df = pd.read_csv("你的GDP数据集路径.csv")
# 生成标准国家代码映射表,此处示例用ISO 3位国家代码
country_map = {c.name.lower(): c.alpha_3 for c in pycountry.countries}

# 匹配函数
def match_country_code(country_name):
    if pd.isna(country_name):
        return None
    clean_name = country_name.strip().lower()
    # 精确匹配优先
    if clean_name in country_map:
        return country_map[clean_name]
    # 模糊匹配兜底
    for std_name, code in country_map.items():
        if fuzz.ratio(clean_name, std_name) >= 90:
            return code
    # 匹配不到留空待人工处理
    return None

# 仅填充国家代码为空的行
gdp_df.loc[gdp_df["国家代码"].isna(), "国家代码"] = gdp_df.loc[gdp_df["国家代码"].isna(), "国家名称"].apply(match_country_code)

# 导出补全后的数据集
gdp_df.to_csv("补全后GDP数据集.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:15:04