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

将多列扁平化为新行:如何转换含重复列的表格至规范结构

解决重复列表格转多行格式的方法

首先先明确我们的转换需求:

原始表格

IDVarVarNameName
0100010002BillJim
0200030004SamKyle

目标表格

IDVarName
010001Bill
010002Jim
020003Sam
020004Kyle

下面是两种实用的实现方法:


方法一:用Excel Power Query(无代码实现)

如果你习惯用Excel处理数据,Power Query是最省心的工具:

  1. 导入数据到Power Query:选中原始数据区域,点击顶部菜单栏的「数据」→「自表格/区域」,在弹出的对话框里确认数据包含标题,点击「确定」进入Power Query编辑器。
  2. 拆分重复列对:
    • 先选中ID列,然后按住Ctrl键选中第一列Var和第一列Name,右键选择「逆透视列对」;
    • 接着再选中ID列,按住Ctrl选中第二列Var和第二列Name,同样右键选择「逆透视列对」;
  3. 整理列名:此时会生成两个Value列,把它们分别重命名为Var和Name,然后删除多余的Attribute列;
  4. 合并并加载数据:把两个拆分后的表合并(或者在步骤2时直接处理所有列对),最后点击「关闭并上载」,就能得到目标格式的表格。

(小提示:如果你的Excel版本没有「逆透视列对」选项,也可以先把所有非ID列逆透视,然后通过Attribute列的分组(比如把Var、Var.1归为一组)重新透视匹配,效果是一样的。)


方法二:用Python Pandas(代码实现)

如果你会点Python,用Pandas几行代码就能搞定:

import pandas as pd

# 模拟原始数据(实际可以用pd.read_excel读取本地文件)
raw_data = {
    'ID': ['01', '02'],
    'Var': ['0001', '0003'],
    'Var_2': ['0002', '0004'],
    'Name': ['Bill', 'Sam'],
    'Name_2': ['Jim', 'Kyle']
}

df = pd.DataFrame(raw_data)

# 拆分原始行成两组数据,分别对应第一组Var/Name和第二组Var/Name
group1 = df[['ID', 'Var', 'Name']]
group2 = df[['ID', 'Var_2', 'Name_2']].rename(columns={'Var_2': 'Var', 'Name_2': 'Name'})

# 合并两组数据并排序
final_df = pd.concat([group1, group2]).sort_values(by='ID').reset_index(drop=True)

print(final_df)

运行这段代码后,输出的结果就是我们想要的目标表格。如果是从Excel读取数据,把raw_data换成pd.read_excel("你的文件路径.xlsx")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:14:08