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

技术问询:如何将列向表格转换为行向表格?

列向表格转行向格式的最优方法

你现有列向格式的表格如下:

Category2023 Jan Rev2023 Jan GM2023 Feb Rev2023 Feb GM
Labour3512610702522789456157891.2
Equipment245049045991.8
Materials163532732464.8

需要转换成如下行向格式:

Category  | Period   | Rev      | GM
__________ __________ __________ ___________
Labour    | Jan 2023 | 3512610  | 702522    
Equipment | Jan 2023 | 2450     | 490
Materials | Jan 2023 | 1635     | 327
Labour    | Feb 2023 | 789456   | 157891.2
Equipment | Feb 2023 | 459      | 91.8
Materials | Feb 2023 | 324      | 64.8

以下是几种最优转换方法:

1. 手动转换(适合小表格)

直接按目标格式逐行整理:

  • 先提取Jan 2023的Rev和GM数据,对应每个Category生成一行
  • 再提取Feb 2023的Rev和GM数据,对应每个Category生成一行
  • 最后对齐列格式,保证排版整齐

2. Excel/Google Sheets 逆透视(高效通用)

Excel操作步骤:

  1. 选中整个表格区域(包括表头)
  2. 点击「数据」选项卡 → 「从表格/区域」打开Power Query编辑器
  3. 在Power Query中,选中Category列,右键 → 「逆透视其他列」
  4. 此时会生成Attribute和Value两列,选中Attribute列 → 「转换」选项卡 → 「拆分列」→ 按空格分隔,拆分成年份、月份、指标三部分
  5. 删除年份列,选中表格 → 「转换」选项卡 → 「透视列」,以「指标」为透视列、「Value」为值列,合并Rev和GM数据
  6. 最后调整表头为Category、Period(将月份格式改为Jan 2023)、Rev、GM,导出数据即可

Google Sheets操作步骤:

可以直接用数组公式快速生成结果:

=QUERY({A2:A4, "Jan 2023", B2:B4, C2:C4; A2:A4, "Feb 2023", D2:D4, E2:E4}, "select Col1, Col2, Col3, Col4 where Col1 is not null", 1)

运行后手动修改表头为目标格式即可

3. Python脚本转换(适合批量/自动化)

如果有大量类似表格需要转换,用pandas库可以快速处理:

import pandas as pd

# 加载原始数据
df = pd.DataFrame({
    "Category": ["Labour", "Equipment", "Materials"],
    "2023 Jan Rev": [3512610, 2450, 1635],
    "2023 Jan GM": [702522, 490, 327],
    "2023 Feb Rev": [789456, 459, 324],
    "2023 Feb GM": [157891.2, 91.8, 64.8]
})

# 逆透视处理
df_melted = df.melt(id_vars="Category", var_name="Attribute", value_name="Value")
# 拆分属性列
df_melted[["Year", "Month", "Metric"]] = df_melted["Attribute"].str.split(" ", expand=True)
# 透视合并Rev和GM
df_pivoted = df_melted.pivot_table(index=["Category", "Year", "Month"], columns="Metric", values="Value").reset_index()
# 生成Period列并整理格式
df_pivoted["Period"] = df_pivoted["Month"] + " " + df_pivoted["Year"]
result = df_pivoted[["Category", "Period", "Rev", "GM"]]

# 输出结果
print(result.to_string(index=False))

运行后会直接输出符合要求的行向格式数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:36:16