首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫系列中如何有条件地改变价值?

熊猫系列中如何有条件地改变价值?
EN

Stack Overflow用户
提问于 2020-05-25 10:32:40
回答 2查看 100关注 0票数 0

我正在尝试从一个使用其他三个数据格式连接的dataframe中进行一些基本数据分析。正如您可以想象的那样,在合并后的一些dataframe列中存在NaN值。所有单独的数据格式都包含大多数相同的标题,但它们来自三个单独的年份(2017,2018,2019)

我感兴趣的数据涉及两栏:

  1. 是一个列,上面有世界各国的名称(‘country’)
  2. -一个名为“区域”的专栏(描述一个国家的地理位置,例如“非洲南部”、“拉丁美洲”等)。

由于country和region列不会更改(即它们必须始终对应),所以我认为可能有一种方法可以更改df.REGION列中的行中的df.REGION值,以匹配它们各自行中的相应国家。我希望这是对df的永久修改。

我曾尝试使用dataframe映射,但未能在那里成功。因此,我尝试使用字典和for循环方法(这似乎也是错误的方法)。但这是我在下面尝试的代码。Spoiler....it没有起作用。

代码语言:javascript
复制
dictionary = {'Belize':'Latin America and Caribbean',
              'Namibia':'Sub-Saharan Africa', 
              'Puerto Rico':'Latin America and Caribbean',
              'Somalia':'Sub-Saharan Africa', 
              'Somaliland Region':"Sub-Saharan Africa",
               'South Sudan':'Sub-Saharan Africa'}

for i, row in df.iterrows():
    country = df.COUNTRY
    region = df.REGION
    for key in dictionary:
        if country in dictionary:
            df.REGION = dictionary[d]

上面的字典以国家名作为键,区域作为值。

有人知道如何使用某种映射函数来填充对应于上述字典中国家名称的“区域”列中的缺失(NaN)值(即区域名称)吗?

任何和所有的帮助都是感激的。

提前谢谢你们

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-25 10:52:13

您可以使用map函数并替换区域为None的所有值:

代码语言:javascript
复制
df = pd.DataFrame({"COUNTRY": ["Germany", "USA", "Belize"],
               "REGION": ["Europe", "North America", None]})

df.loc[df.REGION.isnull(), "REGION"] = df.loc[df.REGION.isnull()].COUNTRY.map(dictionary)
票数 1
EN

Stack Overflow用户

发布于 2020-05-25 10:41:29

使用replace相当简单

代码语言:javascript
复制
df = pd.DataFrame({'Country': ['Namibia', 'Belize']})

df['Region'] = df.Country.replace(dictionary)

结果:

代码语言:javascript
复制
   Country                       Region
0  Namibia           Sub-Saharan Africa
1   Belize  Latin America and Caribbean
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62000594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档