Python 如何将一个国家的名称转换为一个包含当前和过期国家的单独列表的大陆

Python 如何将一个国家的名称转换为一个包含当前和过期国家的单独列表的大陆,python,excel,pycountry-convert,Python,Excel,Pycountry Convert,如何将国家名称转换为国家列表中的大陆名称,一些国家目前存在,另一些国家不再存在(前苏联) 我有一张过去五十年来自世界各国的数据表。我想添加一个新列,模仿列出的国家的列,然后将国家名称转换为相应的大陆 我使用了一个函数,但它只能接受现有国家的输入。有一个pycountry工具可以处理不再存在的国家(例如:苏联)的“历史”名称,但列表中不包括存在的国家。我认为我的country\u to\u contraction()函数需要能够针对列表、活动或非活动国家/地区测试输入,但我不确定这会是什么样子 #

如何将国家名称转换为国家列表中的大陆名称,一些国家目前存在,另一些国家不再存在(前苏联)

我有一张过去五十年来自世界各国的数据表。我想添加一个新列,模仿列出的国家的列,然后将国家名称转换为相应的大陆

我使用了一个函数,但它只能接受现有国家的输入。有一个pycountry工具可以处理不再存在的国家(例如:苏联)的“历史”名称,但列表中不包括存在的国家。我认为我的
country\u to\u contraction()
函数需要能够针对列表、活动或非活动国家/地区测试输入,但我不确定这会是什么样子

# country_to_continent takes country_name, converts it to an alpha code and then
# looks up the continent using the alpha code.
def country_to_continent(country_name):
    country_alpha2 = pc.country_name_to_country_alpha2(country_name)
    country_continent_code = pc.country_alpha2_to_continent_code(country_alpha2)
    country_continent_name = pc.convert_continent_code_to_continent_name(country_continent_code)
    return country_continent_name

#create new column
hivdata.insert(1,"column1", np.nan)
#new column replicates first column indexing by country name
hivdata["column1"] = hivdata['Estimated HIV Prevalence% - (Ages 15-49)']
#apply function to column 1
hivdata['column1'] = hivdata['column1'].apply(country_to_continent)
错误:

70如果cn\u名称不在dict\u country\u name\u to\u country\u alpha2中:
--->71 raise KeyError(“无效的国家名称:'{0}'”。格式(cn_名称))
72
73返回dict_country_name_至_country_alpha2[cn_name]
KeyError:“无效的国家名称:'阿布哈兹'

我不熟悉
pycountry convert
模块,但是在Python中处理类似情况的典型方法是首先检查活动列表,如果失败,然后尝试另一个。由于引发异常,您应该能够通过在
try
/
except
子句中包装对模块的调用来完成此操作。您可以将执行所有这些操作的逻辑放在自己的函数中,以更好地封装它,并使其更加无缝。快速查看后,pycountry convert似乎以pycountry为基础,而
pycountry
模块只有一个非常有限的
历史国家数据库
——您要查找的国家不在短列表中。因此,尽管根据问题本身的优点来理解和解决问题可能是值得的,但最终可能无法找到有效的解决方案。