我有一个数据框,其中“国家/地区”列包含我要转换为alpha_3国家/地区代码的国家/地区的名称(在标有“代码”的新列中)。我正在使用pycountry,但由于一些国家名称属于pycountry'name'而遇到错误,而另一些则是pycountry'common_name'和'official_name'。
转换我的国家/地区列表时,如何检查所有三个?作为参考,我目前正在使用以下函数来获取代码(现在它只是查看'name'):
def get_country_code(x):
return pycountry.countries.get(name=x).alpha_3
df = get_data('data.csv')
df['Code'] = df['Country'].apply(get_country_code)
编辑:示例数据:
Country
Afghanistan
Bolivia
Iran (Islamic Republic of)
任何帮助,将不胜感激!
使用pycountry.countries.lookup
>>> pycountry.countries.lookup('Bolivia')
Country(alpha_2='BO', alpha_3='BOL', common_name='Bolivia', name='Bolivia, Plurinational State of', numeric='068', official_name='Plurinational State of Bolivia')
对于简单的子字符串匹配,您可以使用in
:
import pycountry
def get_country_code(name):
for co in list(pycountry.countries):
if name in co.name:
return co.alpha_3
return None
names = "Afghanistan", "Bolivia", "Iran", "Molvania", "I"
for name in names:
print(name, get_country_code(name))
这会产生:
Afghanistan AFG
Bolivia BOL
Iran IRN
Molvania None
I ALA
您需要决定如何处理搜索失败,在上面我返回可能没用的None
。此外,只返回第一场比赛,因此“I”与奥兰群岛相匹配。