首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个系列的不同数据,并在哪里找到了第三个系列的替换值。

比较两个系列的不同数据,并在哪里找到了第三个系列的替换值。
EN

Stack Overflow用户
提问于 2019-01-05 15:54:00
回答 1查看 450关注 0票数 0

这是我的主要数据包含一些数据,它有世界各国在ISO国家代码alpha-2 (意为两个字母符号)。最终,dataframe将与另一个在ISO国家代码alpha-3 (意为三个字母符号)中的世界国家合并。有一些python包可以进行转换,但是应该可以使用简单的参考csv文件来比较和替换数据文件中的数据。

编辑:两个数据中的国家代码并不是相同的顺序(一些缺失/没有人口),这就是为什么我需要迭代并手动挑选每个符号。

因为我是初学者,所以我陷入了代码的制定,无法正确的语法。继续获取: ValueError:只能比较相同标记的Series对象

我试图获取索引位置和值,但是不能将新的系列添加到原始的dataframe。我制作了一个简单的for循环来测试和可视化我想要实现的目标,参见代码。

代码语言:javascript
复制
# notebook magic
%matplotlib inline

# import packages
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import geopandas

# import excel data from files
# note: here the countries are in ISO 3166-1 alpha-2
joblist = pd.read_excel('joblist.xlsx', sheet_name='Joblist', header=1).reset_index(drop=True)

# load iso-countries reference file for conversion
countries = pd.read_csv('iso-countries.csv')

# load the world map dataset and remove Antartica and empty countries
# note: here the countries are in ISO 3166-1 alpha-3
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world = world[(world.pop_est>0) & (world.name!="Antarctica")]

# just for testing, iterate and fetch correct value, THIS fetched value should be appended to main dataframe 
for value in world['iso_a3']:
    print('* INPUT VALUE *', value)
    print('* FETCHED VALUE *', countries['alpha-2'].loc[countries['alpha-3'] == value])

# append new iso alpha-2 value to world dataframe
# THIS IS THE LINE OF CODE I AM STUCK IN
world['iso_a2'] = countries['alpha-2'].where(world['iso_a3'] == countries['alpha-3'])   

在我的for循环中,这是我想要实现的一个国家的例子。在"world“dataframe中遍历ISO alpha-3系列,并对每个项目搜索"countries”数据并定位该项所在的行("UKR")。然后,当我得到正确的行时,将alpha-2值("UA")复制到"world“dataframe。

对于循环输出示例:

  • 输入“公共”值*是: UKR
  • 获取值* IS: 232 UA
  • 名称: alpha-2,dtype: object
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-05 18:11:52

一种方法是将countries DataFrame转换为Series.replace()可以接受的系列。为此,将countriescountries列设置为索引;这将返回一个包含一个索引和一个名为alpha-2的列的DataFrame。将alpha-2列(熊猫系列)传递给world['iso_a3'].replace(),如下所示:

代码语言:javascript
复制
world['iso_a2'] = world['iso_a3'].replace(countries.set_index('alpha-3')['alpha-2'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54053618

复制
相关文章

相似问题

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