【问题标题】:Extracting country name from dataframe column- Python从数据框列中提取国家名称 - Python
【发布时间】:2020-05-13 17:30:30
【问题描述】:

我正在尝试从数据框列之一中提取国家名称。数据框如下图链接所示: Data Frame image 数据框: 云南大学大气科学系,昆明,中国 我在隶属关系列的每一行中都有类似于上述文字的内容。

我想从 Affiliation 列中提取国家名称,并将它们保存在每一行的新列中。 我是 Python 新手,尝试过下面的代码,但没有成功,什么也没返回。

Cntr = []
for country in pycountry.countries:
    if country.name in authors.Affiliation:
        Cntr.append(country.name)

【问题讨论】:

  • 您可以只取最后一个数据框列df['Affiliation'] 并应用一个函数,该函数会在最后一个逗号之后删除所有字符
  • @UmarAftab:最后一个元素中有两个国家。
  • @mechanical_meat 这就是我投票给你的原因!

标签: python pandas dataframe extract country


【解决方案1】:

尝试使用拆分功能:

df['new_column_name']=df['Affiliation'].to_string().split(',')[-1]

希望对你有帮助..

【讨论】:

  • 唯一的问题是在最后一个元素中有两个国家:英国和中国。
  • 哦,我明白了,让我再算一下,所以对于最后的元素,对应的值应该包含两个值???bcz有两个国家..
  • 对,这是我的理解。因为这两个国家周围有两个盒子。
  • 对,如果是这种情况,那么也同意你的回答。 :)
【解决方案2】:

使用这个条件它可能会起作用。

if len([x for x in authors.Affiliation if re.search(subs, x)]) > 0:
    Cntr.append(country.name)

【讨论】:

    【解决方案3】:

    pycountry.countries 未返回国家/地区列表。首先,您需要提取国家名称。

    name = []
    for i in list(pycountry.countries):
        name.append(i.name)
    Cntr = []
    for country in name:
        if country.name in authors.Affiliation:
            Cntr.append(country.name)
    

    【讨论】:

    • 关键是我需要每个作者的国家,我也有一些空的隶属关系,我需要在数据框中有一列国家,因为我应该根据每行分配一个国家作者 ID。
    • @Hamid 谢谢!您的代码运行良好,我可以获得国家/地区列表,是否有任何方法可以同时获取每行的国家和作者 ID?
    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多