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

Pandas如何将DataFrame的Year列值转为新列、其余列转为行?

Pandas DataFrame 行列转换实现方案

你需要的是典型的长宽表转换操作,可通过以下两种方式实现:

方法1:通用写法(兼容多数值列场景)

通过melt+pivot组合实现,适配任意多列的转换需求:

import pandas as pd

# 构造原始示例数据(已有df可跳过该步骤)
df = pd.DataFrame({
    'Year': [1, 2, 3],
    'Propertyval': [1224000.00, 1248480.00, 1273449.60],
    'Cumulative': [24000.00, 48480.00, 73449.60]
})

# 先转长表
df_long = df.melt(id_vars='Year', var_name='Desc', value_name='Value')
# 再转目标格式宽表
result = df_long.pivot(index='Desc', columns='Year', values='Value')\
                .reset_index()\
                .rename_axis(columns=None)

方法2:极简写法(适配当前场景)

当前场景只有Year+两个数值列,直接转置即可一步得到结果:

result = df.set_index('Year').T.reset_index(names='Desc').rename_axis(columns=None)

执行后打印result即可得到对应输出:

Desc          1          2          3
0  Propertyval  1224000.0  1248480.0  1273449.6
1   Cumulative    24000.0    48480.0    73449.6

注:你给出的目标结果中Propertyval对应Year=1的取值疑似手误,上述代码保留了原始数据的真实取值,如有特殊修改需求可自行调整对应数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:00