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

如何将ID关联的多组P/Q列数据转换为多行合并结构?

宽表转长表:拆分P/Q列并按ID生成多行记录

下面给你几种常用的实现方式,按需选择:

方法1:Excel Power Query(非编程用户首选)

操作步骤很直观:

  • 选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」,导入Power Query编辑器
  • 选中ID列,点击「转换」选项卡 → 「逆透视列」→ 「逆透视其他列」,此时会生成Attribute(原列名)和Value(对应值)两列
  • 添加自定义列:用公式提取原列名的前缀和后缀,生成A列(比如= "PQ" & Text.End([Attribute], 1))
  • 再次调整结构:选中ID、A列,点击「转换」→ 「透视列」,值列选Value,列名选从原列名提取的前缀(P/Q)
  • 最后关闭并上载,就能得到目标格式的表格

方法2:Python Pandas(编程用户适用)

用代码批量处理更高效,示例如下:

import pandas as pd

# 构造原始数据(实际场景可替换为pd.read_excel/pd.read_csv读取数据)
df = pd.DataFrame({
    'ID': [1, 2, 3],
    'P1': [1, 10, 1],
    'P2': [2, 20, 2],
    'P3': [3, 30, 30],
    'Q1': [4, 40, 400],
    'Q2': [5, 50, 50],
    'Q3': [6, 60, 60]
})

# 宽表转长表,拆分列名的前缀和后缀
melted_df = df.melt(id_vars='ID', var_name='col', value_name='val')
melted_df['prefix'] = melted_df['col'].str[0]
melted_df['suffix'] = melted_df['col'].str[1]

# 透视重组P/Q列,生成最终结果
result_df = melted_df.pivot_table(
    index=['ID', 'suffix'],
    columns='prefix',
    values='val',
    aggfunc='first'
).reset_index()
result_df['A'] = 'PQ' + result_df['suffix']
result_df = result_df[['ID', 'A', 'P', 'Q']]

print(result_df)

方法3:SQL(数据库场景使用)

如果数据存储在数据库中,直接用UNION ALL拆分每组Pn/Qn即可:

SELECT ID, 'PQ1' AS A, P1 AS P, Q1 AS Q FROM your_table
UNION ALL
SELECT ID, 'PQ2' AS A, P2 AS P, Q2 AS Q FROM your_table
UNION ALL
SELECT ID, 'PQ3' AS A, P3 AS P, Q3 AS Q FROM your_table
ORDER BY ID, A;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:40:05