You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:10:01