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

如何为Pandas DataFrame添加基于国家所属大洲的列

简便实现国家到7大洲的自动映射方案

方案一:使用pycountry-convert库(推荐)

这个库可直接通过国家名称/代码完成到大洲的映射,无需手动维护庞大字典,步骤如下:

  1. 安装依赖
pip install pycountry-convert pycountry
  1. 代码实现
import pandas as pd
import pycountry_convert as pc
import pycountry

# 读取本地数据集(假设已下载Kaggle的文件到本地)
df = pd.read_csv('world-population-growth-annual.csv')

# 标准化国家名称(解决数据集内名称变体问题,比如"Korea, Rep." -> "Republic of Korea")
def standardize_country(name):
    try:
        return pycountry.countries.lookup(name).name
    except LookupError:
        return name

df['standardized_country'] = df['Country'].apply(standardize_country)

# 国家转7大洲函数(适配7大洲划分,默认库会合并美洲,这里拆分)
def get_continent(country_name):
    try:
        country_code = pc.country_name_to_country_alpha2(country_name, cn_name_format="default")
        continent_code = pc.country_alpha2_to_continent_code(country_code)
        continent = pc.convert_continent_code_to_continent_name(continent_code)
        
        # 拆分美洲为北美、南美,适配7大洲要求
        if continent == "Americas":
            north_america_countries = {"United States", "Canada", "Mexico", "Greenland", "Belize", "Costa Rica",
                                      "El Salvador", "Guatemala", "Honduras", "Nicaragua", "Panama", "Bahamas",
                                      "Barbados", "Cuba", "Dominica", "Dominican Republic", "Grenada", "Haiti",
                                      "Jamaica", "Saint Kitts and Nevis", "Saint Lucia", "Saint Vincent and the Grenadines",
                                      "Trinidad and Tobago"}
            return "North America" if country_name in north_america_countries else "South America"
        return continent
    except:
        return "Unknown"

# 添加大洲列
df['continent'] = df['standardized_country'].apply(get_continent)

# 可选:删除中间标准化列
df.drop('standardized_country', axis=1, inplace=True)

# 查看结果
print(df[['Country', 'continent']].sample(10))

方案二:使用预定义映射数据集(无需额外库)

如果不想安装第三方库,可创建极简版国家-大洲映射字典(覆盖数据集核心国家),再补充缺失值:

import pandas as pd

# 核心国家-大洲映射(覆盖数据集主要国家)
continent_map = {
    "China": "Asia", "India": "Asia", "United States": "North America", "Indonesia": "Asia",
    "Pakistan": "Asia", "Brazil": "South America", "Nigeria": "Africa", "Bangladesh": "Asia",
    "Russia": "Europe", "Mexico": "North America", "Japan": "Asia", "Ethiopia": "Africa",
    "Philippines": "Asia", "Egypt": "Africa", "Germany": "Europe", "Iran": "Asia",
    "Turkey": "Asia", "France": "Europe", "United Kingdom": "Europe", "Italy": "Europe"
    # 按需补充数据集内的其他国家
}

df = pd.read_csv('world-population-growth-annual.csv')
df['continent'] = df['Country'].map(continent_map).fillna("Unknown")

注意事项

  • 对于数据集内的特殊国家名称(如"Korea, Rep."),优先用pycountry做标准化,避免映射失败
  • 如果要求严格的7大洲划分,需手动补充美洲国家的拆分规则(方案一中已包含基础拆分)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:20:16