Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有条件地更改熊猫系列中的值?_Python_Pandas_Loops_Dataframe_Nan - Fatal编程技术网

Python 如何有条件地更改熊猫系列中的值?

Python 如何有条件地更改熊猫系列中的值?,python,pandas,loops,dataframe,nan,Python,Pandas,Loops,Dataframe,Nan,我正试图从一个使用其他三个数据帧连接的数据帧中进行一些基本数据分析。正如您可以想象的那样,在合并后的一些数据帧列中存在NaN值。所有单独的数据帧包含大多数相同的标题,但来自三个不同的年份(201720182019) 我感兴趣的数据涉及两列: 列有世界各国(“国家”)名称的专栏 一个名为“地区”的栏目(描述一个国家位于非洲“撒哈拉以南”、“拉丁美洲”等地的地理位置) 由于country和region列不会更改(即它们必须始终对应),我认为可能有一种方法可以更改df.region列行中的NaN值,以

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

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

  • 列有世界各国(“国家”)名称的专栏

  • 一个名为“地区”的栏目(描述一个国家位于非洲“撒哈拉以南”、“拉丁美洲”等地的地理位置)

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

    我曾尝试使用数据帧映射,但未能成功。因此我尝试了字典和for循环方法(这似乎也是错误的方法)。但这是我在下面尝试的代码。扰流板…无效

    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)值(即区域名称)

    非常感谢您的帮助

    提前感谢大家

    使用非常简单:

    结果:

       Country                       Region
    0  Namibia           Sub-Saharan Africa
    1   Belize  Latin America and Caribbean
    
    使用非常简单:

    结果:

       Country                       Region
    0  Namibia           Sub-Saharan Africa
    1   Belize  Latin America and Caribbean
    

    您可以使用
    map
    功能替换区域为None的所有值:

    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)
    

    您可以使用
    map
    功能替换区域为None的所有值:

    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)
    

    请分享你的数据框
    df
    。请分享你的数据框
    df
    的一个样本。谢谢。它像一个符咒一样工作。非常简单的解决方案。谢谢。它像一个符咒一样工作。非常简单的解决方案。地图功能的使用非常酷。我一定会把它添加到我的技术中。谢谢你非常酷地使用地图功能我一定会把这个加入到我的技巧中。谢谢