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

如何用Python Pandas将两列标题转为行值并重组列结构

解决方案

核心方法:使用pd.melt()实现宽表转长表

这是Pandas处理列转行的标准方案,完全匹配你的需求——将指定列的标题转为新列的行值,对应数据合并到同一列。

示例演示

假设原始表格结构如下(含标识列ID):

ID列1列2
11020
23040

目标表格样式:

ID列标题数据值
1列110
1列220
2列130
2列240

代码实现

import pandas as pd

# 替换为你的实际DataFrame
df = pd.DataFrame({
    'ID': [1, 2],
    '列1': [10, 30],
    '列2': [20, 40]
})

# 执行转换
result_df = df.melt(
    id_vars=['ID'],  # 保留原结构的列(无此类列可省略)
    value_vars=['列1', '列2'],  # 需要转成行值的目标列
    var_name='列标题',  # 存储原列标题的新列名
    value_name='数据值'  # 存储对应数据的新列名
)

print(result_df)

关键参数说明

  • id_vars:指定无需转换的列,保持原有每行对应关系,无此类列可省略。
  • value_vars:明确要转换的目标列,不指定则默认转换所有非id_vars的列。
  • var_name:自定义存储原列标题的新列名称。
  • value_name:自定义存储对应数据的新列名称。

无标识列的简化场景

如果原始表只有需要转换的两列,无其他保留列,代码可简化为:

df = pd.DataFrame({
    '列1': [10, 30],
    '列2': [20, 40]
})

result_df = df.melt(
    var_name='列标题',
    value_name='数据值'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:57:17