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

如何使用Pandas重塑Dataframe实现年份横向、Ex及ID纵向保留

解决方法

你的需求属于典型的长宽表转换场景,先把Ex1、Ex2两个指标列转为纵向,再把年份作为列名展开即可,用pandas的melt+pivot组合就能实现,不需要用transpose(transpose是全表转置,不适合这种分字段转换的场景)。

完整代码如下:

import pandas as pd

# 构造原始DataFrame,你实际使用时替换成读取你自己的数据的代码即可
df = pd.DataFrame({
    'ID': [1,1,1,2,2,2,3,3,3,3],
    'Year': [2021,2022,2023,2024,2025,2021,2022,2023,2024,2025],
    'Ex1': [315,233,566,754,334,543,678,65,456,53],
    'Ex2': [35,23,5766,7554,3334,5443,6728,645,4556,563]
})

# 第一步:将Ex1、Ex2列转为纵向行
df_melt = df.melt(
    id_vars=['ID', 'Year'],  # 保持ID、Year列不动
    value_vars=['Ex1', 'Ex2'],  # 要转成纵向的列
    var_name='Ex',  # 转后的指标列名
    value_name='Value'  # 转后的数值列名
)

# 第二步:将Year字段转为横向列
result = df_melt.pivot(
    index=['ID', 'Ex'],  # 作为行索引的字段
    columns='Year',  # 要转成列的字段
    values='Value'  # 填充到单元格的数值字段
).reset_index().fillna('')  # 重置索引,空值填充为空字符串,和你预期的展示效果一致

print(result)

运行上述代码得到的结果和你给出的预期格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:36:03