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

如何使用pandas.melt无需指定列获取所有变量的全部对应值

最简解法:直接使用pd.melt,无需手动指定列

pd.melt默认会把输入DataFrame的所有列作为待转换的变量列,不需要手动传入id_vars和value_vars参数,只需要指定输出的列名即可:

# 基础转换,输出列名为var和value
res = pd.melt(df1, var_name='var', value_name='value')

如果需要和你示例中的输出顺序完全一致(按原始行的顺序逐行展开所有变量),只需要额外加一步排序即可:

# 按原始行顺序展开,最终输出和你给出的示例结构、顺序完全一致
res = (
    pd.melt(df1.reset_index(), id_vars='index', var_name='var', value_name='value')
    .sort_values(['index', 'var'])
    .drop('index', axis=1)
    .reset_index(drop=True)
)

可选方案:使用pd.wide_to_long实现

如果你的列名都是固定的var+数字格式,也可以用wide_to_long实现同样效果,同样不需要枚举所有列:

res = (
    pd.wide_to_long(df1.reset_index(), stubnames='var', i='index', j='var_num')
    .reset_index()
    .sort_values(['index', 'var_num'])
    .rename(columns={'var': 'value'})
    .assign(var=lambda x: 'var' + x['var_num'].astype(str))
    .drop(['index', 'var_num'], axis=1)
    .reset_index(drop=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 04:39:02