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

如何使用Pandas将单行多列表格重塑为分类-值对格式?

解决单行DataFrame重塑为Category-Value格式的问题

先构造和你描述一致的单行DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Year': [1999],
    'foo': [10],
    'bar': [30],
    'baz': [20]
})

你需要的是把foo、bar、baz这三列转成Category列的行值,对应数值放到Value列,用pandas.melt()就能实现,核心是明确指定要转换的列,以及新列的名称:

方法1:仅保留Category和Value列

melted_df = df.melt(
    value_vars=['foo', 'bar', 'baz'],  # 指定要转换为行的列
    var_name='Category',               # 存储原列名的新列名
    value_name='Value'                 # 存储对应数值的新列名
)

输出结果:

CategoryValue
foo10
bar30
baz20

方法2:保留Year列(如需关联其他年份数据)

如果后续需要保留年份信息,只需加上id_vars参数指定要保留的标识符列:

melted_df_with_year = df.melt(
    id_vars=['Year'],                  # 保留不参与转换的列
    value_vars=['foo', 'bar', 'baz'],
    var_name='Category',
    value_name='Value'
)

输出结果:

YearCategoryValue
1999foo10
1999bar30
1999baz20

你之前用melt失败,大概率是没明确指定value_vars,导致把Year也当成了要转换的列,或者没给新列指定正确的名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:50:24