如何将DataFrame中的国家名称替换为所属大洲名称?
替换国家名为对应大洲的实现方案
要把DataFrame里的国家名称映射成对应的大洲,最直接的方式是用字典映射结合pandas的map()或replace()方法,我给你写个具体的实现步骤:
1. 构建国家-大洲的映射字典
首先把你数据里出现的所有国家和对应的大洲一一对应起来,针对你给出的数据集,字典可以这样写:
country_to_continent = { 'Sweden': 'Europe', 'Africa': 'Africa', # 要是这里的"Africa"是输入错误(比如本是某个非洲国家),改成对应国家名再映射到'Africa'就行 'Germany': 'Europe', 'UK': 'Europe', 'Pakistan': 'Asia', 'ZA': 'Africa' # ZA是南非的ISO代码,对应非洲 }
2. 用map()完成替换
假设你的DataFrame名为problem,Country是存储国家名称的列,执行以下代码可以生成新的大洲列(也可以直接替换原列):
# 生成新的Continent列,保留原Country列 problem['Continent'] = problem['Country'].map(country_to_continent) # 如果想直接替换原Country列,用这行: # problem['Country'] = problem['Country'].map(country_to_continent)
3. 处理未匹配的国家(可选)
如果后续数据里出现字典中没有的国家,map()会返回NaN,你可以用fillna()给这些未知值设置默认值:
problem['Continent'] = problem['Country'].map(country_to_continent).fillna('Unknown')
替代方案:用replace()方法
要是你希望未匹配的国家保留原名称,而不是变成NaN,可以用replace():
problem['Continent'] = problem['Country'].replace(country_to_continent)
验证结果
执行完后,用problem.head(30)就能看到替换效果——原来的Sweden会变成Europe,Pakistan变成Asia,ZA变成Africa,完全符合需求。后续如果有更多国家需要映射,只需要扩展country_to_continent字典就行,非常灵活。
内容的提问来源于stack exchange,提问作者Imran Ahmad Ghazali
相关产品推荐
相关产品推荐

