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

如何使用Pandas库转置世界银行数据?求助实现目标格式

解决Pandas宽表转长表的问题

你可以用Pandas的melt()函数实现这个宽表转长表的需求,这是处理这类结构转换最直接的工具。

具体步骤与代码

假设你的原始DataFrame df 结构如下(简化示例):

import pandas as pd

# 模拟你的原始数据
data = {
    'TOPIC': ['Inflation', 'Inflation'],
    'COVENTRY': ['United Kingdom', 'Germany'],
    'CODE': ['UK', 'DE'],
    'CURRENCY': ['GBP', 'EUR'],
    2000: [2.1, 1.5],
    2001: [1.8, 1.2],
    2002: [2.3, 1.7],
    2003: [1.9, 1.4]
}
df = pd.DataFrame(data)

执行以下代码即可得到目标格式:

# 宽表转长表
df_transformed = df.melt(
    id_vars=['COVENTRY', 'CODE', 'CURRENCY'],  # 保留的维度列
    value_vars=[2000, 2001, 2002, 2003],       # 需要转置的年份列
    var_name='YEAR',                           # 转置后的年份列名
    value_name='INFLATION'                     # 转置后的通胀值列名
)

# 可选:将YEAR列转为整数类型(如果原始年份列是字符串格式)
df_transformed['YEAR'] = df_transformed['YEAR'].astype(int)

转换后的结果示例

COVENTRYCODECURRENCYYEARINFLATION
United KingdomUKGBP20002.1
GermanyDEEUR20001.5
United KingdomUKGBP20011.8
GermanyDEEUR20011.2
...............

补充说明

  • 如果你的年份列是字符串格式(比如'2000'),只需把value_vars改成对应的字符串列表即可,比如['2000', '2001', '2002', '2003']
  • 如果原始数据里TOPIC列包含其他值,但你只需要保留Inflation的行,可以先过滤:df = df[df['TOPIC'] == 'Inflation']再执行转换

内容的提问来源于stack exchange,提问作者okyay sönmez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:13:21