首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问世界银行数据指标并使用熊猫数据框架

访问世界银行数据指标并使用熊猫数据框架
EN

Stack Overflow用户
提问于 2018-10-19 11:02:35
回答 1查看 581关注 0票数 1

我正试图获取世界银行的一系列健康指标的数据。

为了访问世界银行的数据,使用了以下代码:

进口:

代码语言:javascript
复制
import wbdata
import datetime

见不同指标:

代码语言:javascript
复制
wbdata.get_indicator(source=16) #Source 16 gives indicators for health.

这将返回以下内容:

代码语言:javascript
复制
SP.DYN.TFRT.IN          Fertility rate, total (births per woman)
SP.DYN.SMAM.MA          Mean age at first marriage, male
SP.DYN.SMAM.FE          Mean age at first marriage, female

若要在一段时间内访问特定国家的数据,请使用以下代码:

代码语言:javascript
复制
data_dates = (datetime.datetime(2015,1,1), datetime.datetime(2015,1,1))

top_20_data = wbdata.get_dataframe({'SP.DYN.TFRT.IN':'Fertility rate, total (births per woman)','SP.DYN.SMAM.MA':'Mean age at first marriage, male'}, 
                            country=('BE','BG','CZ','DK','DE','EE','IE','GR','ES','FR','HR','IT','CY','LV','LT','LU',
                                     'HU','MT','NL','AT','PL','PT','RO','SI','SK','FI','SE','GBR'), 
                            data_date=data_dates, 
                            convert_date=False, keep_levels=True)

我想要做的是把每个指标输入到数据框架和每个描述中。

我想要做的是创建一个小样本熊猫数据框架:

代码语言:javascript
复制
data = {'Indicator': ['SP.DYN.TFRT.IN', 'SP.DYN.SMAM.MA', 'SP.DYN.SMAM.MA'],
 'Description': ['Fertility rate, total (births per woman)', 'Mean age at first marriage, male', 'Mean age at first marriage, female']}

df = pd.DataFrame(data, columns=['Indicator', 'Description']) 

然后像这样把这个传递给wdata.get_daframe:

代码语言:javascript
复制
top_20_data = wbdata.get_dataframe({df['Indicator']:df['Description']}, 
                            country=('BE','BG','CZ','DK','DE','EE','IE','GR','ES','FR','HR','IT','CY','LV','LT','LU',
                                     'HU','MT','NL','AT','PL','PT','RO','SI','SK','FI','SE','GBR'), 
                            data_date=data_dates, 
                            convert_date=False, keep_levels=True)

但我收到以下错误:

代码语言:javascript
复制
TypeError: 'Series' objects are mutable, thus they cannot be hashed

我在网上看了一下,但没有发现任何特别有用的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-19 11:14:42

DataFrame转换为字典:

代码语言:javascript
复制
d = dict(df.values)
#another solution
#d = df.set_index('Indicator')['Description'].to_dict()
top_20_data = wbdata.get_dataframe(d, 
                            country=('BE','BG','CZ','DK','DE','EE','IE','GR','ES','FR','HR','IT','CY','LV','LT','LU',
                                     'HU','MT','NL','AT','PL','PT','RO','SI','SK','FI','SE','GBR'), 
                            data_date=data_dates, 
                            convert_date=False, keep_levels=True)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52891100

复制
相关文章

相似问题

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