如何使用wbgapi的coder函数提取WBG NAME重命名DataFrame索引
解决wbgapi索引重命名提取WBG NAME的问题
你遇到的核心问题是wb.economy.coder返回的是包含三列的DataFrame,而rename的index参数需要的是单个值的映射关系(字典或能处理单个索引的函数)。下面是两种可行的解决方案:
方案一:批量生成映射字典(推荐,效率更高)
先一次性获取所有索引对应的WBG标准名称,转成字典后传给rename:
import wbgapi as wb # 直接获取2021年全球人均GDP数据,指定time参数减少冗余 gdppercap = wb.data.DataFrame('NY.GDP.PCAP.CD', wb.region.members('WLD'), time=2021) # 生成原索引到WBG NAME的映射字典 coder_result = wb.economy.coder(gdppercap.index) name_mapping = coder_result['WBG NAME'].to_dict() # 排序并重命名索引 sorted_gdp = gdppercap['YR2021'].sort_values(ascending=False).rename(index=name_mapping) print(sorted_gdp)
方案二:自定义单个值处理函数
如果需要逐个处理索引值,可以写一个简单函数提取WBG NAME:
import wbgapi as wb gdppercap = wb.data.DataFrame('NY.GDP.PCAP.CD', wb.region.members('WLD'), time=2021) # 自定义函数:接收索引值,返回对应的WBG NAME def get_wbg_standard_name(index_val): return wb.economy.coder(index_val)['WBG NAME'].iloc[0] # 传递自定义函数给rename sorted_gdp = gdppercap['YR2021'].sort_values(ascending=False).rename(index=get_wbg_standard_name) print(sorted_gdp)
为什么原代码不生效?
原代码直接把wb.economy.coder传给rename,但该函数返回的是DataFrame而非单个字符串,rename无法直接解析这种格式,因此需要先提取出WBG NAME列的内容作为映射关系。
内容的提问来源于stack exchange,提问作者Zubo
相关产品推荐
相关产品推荐

