我正在尝试从一个使用其他三个数据格式连接的dataframe中进行一些基本数据分析。正如您可以想象的那样,在合并后的一些dataframe列中存在NaN值。所有单独的数据格式都包含大多数相同的标题,但它们来自三个单独的年份(2017,2018,2019)
我感兴趣的数据涉及两栏:
由于country和region列不会更改(即它们必须始终对应),所以我认为可能有一种方法可以更改df.REGION列中的行中的df.REGION值,以匹配它们各自行中的相应国家。我希望这是对df的永久修改。
我曾尝试使用dataframe映射,但未能在那里成功。因此,我尝试使用字典和for循环方法(这似乎也是错误的方法)。但这是我在下面尝试的代码。Spoiler....it没有起作用。
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)值(即区域名称)吗?
任何和所有的帮助都是感激的。
提前谢谢你们
发布于 2020-05-25 10:52:13
您可以使用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)发布于 2020-05-25 10:41:29
使用replace相当简单
df = pd.DataFrame({'Country': ['Namibia', 'Belize']})
df['Region'] = df.Country.replace(dictionary)结果:
Country Region
0 Namibia Sub-Saharan Africa
1 Belize Latin America and Caribbeanhttps://stackoverflow.com/questions/62000594
复制相似问题