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

如何用Python Pandas的pivot将表格转换为国家名称、年份、值的结构

Pandas 转换表格为「国家名称-年份-对应数值」结构

根据你的表格结构(第一列为国家名称,后续各列为年份,单元格为对应年份的数值),以下是具体实现方法:

方法1:最简便的方式(使用melt)

虽然你问的是pivot,但宽表转长表最直接的工具是melt,代码如下:

import pandas as pd

# 假设你的原始数据框是df,国家列名为"国家名称"
df_long = df.melt(
    id_vars=["国家名称"],  # 保留作为标识的列
    var_name="年份",       # 新生成的年份列的名称
    value_name="对应年份数值"  # 新生成的数值列的名称
)

方法2:用pivot相关逻辑实现(反向重塑)

如果一定要贴合pivot的思路,可通过堆叠列索引再调整结构实现:

# 1. 将年份列转为行索引层级,得到多索引的Series
stacked = df.set_index("国家名称").stack()

# 2. 重置索引,将多索引转为普通列
df_long = stacked.reset_index()

# 3. 重命名列名匹配需求
df_long.columns = ["国家名称", "年份", "对应年份数值"]

补充说明

  • 若原始表格的年份列是字符串类型,可通过df_long["年份"] = df_long["年份"].astype(int)转为数值类型。
  • 转换后若存在缺失值,可使用df_long.dropna()删除或df_long.fillna()填充。

内容的提问来源于stack exchange,提问作者Monica

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:15:14