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

Power BI实现Columns to Rows:油品品牌列转行的需求与问题

解决油品表格列转行的方案

核心思路

你需要执行**表格逆透视(Unpivot)**操作,把原本作为列名的油品品牌转为行数据,同时关联对应的价格、变动值和变动百分比列。

工具实现方案

Excel/Power Query

  • 选中原始表格数据,进入「数据」选项卡,点击「从表格/区域」启动Power Query编辑器
  • 选中所有油品价格列、变动列、变动百分比列(不要选Date列)
  • 在Power Query的「转换」选项卡中,点击「逆透视列」→「逆透视其他列」
  • 若原始列名有统一前缀(比如「92#汽油价格」「92#汽油变动」),可按前缀分组,将同一油品的价格、变动、百分比整合到同一行
  • 调整完成后关闭Power Query,加载数据即可得到目标格式

Python(Pandas)

代码示例如下:

import pandas as pd

# 读取原始数据
df = pd.read_excel("your_file.xlsx")

# 定义各油品对应的列组
oil_columns = {
    "92#汽油": ["92#汽油价格", "92#汽油变动", "92#汽油变动%"],
    "0#柴油": ["0#柴油价格", "0#柴油变动", "0#柴油变动%"]
    # 按实际油品补充
}

# 构建结果数据
result_rows = []
for _, row in df.iterrows():
    date = row["Date"]
    for oil_name, cols in oil_columns.items():
        result_rows.append({
            "油品品牌": oil_name,
            "日期": date,
            "价格": row[cols[0]],
            "较前一日价格变动": row[cols[1]],
            "变动百分比": row[cols[2]]
        })

# 生成结果表格
result_df = pd.DataFrame(result_rows)
result_df.to_excel("output.xlsx", index=False)

SQL(数据库场景)

假设原始表名为oil_prices,用UNION ALL实现列转行:

SELECT 
    '92#汽油' AS 油品品牌,
    Date AS 日期,
    92#汽油价格 AS 价格,
    92#汽油变动 AS 较前一日价格变动,
    92#汽油变动% AS 变动百分比
FROM oil_prices
UNION ALL
SELECT 
    '0#柴油' AS 油品品牌,
    Date AS 日期,
    0#柴油价格 AS 价格,
    0#柴油变动 AS 较前一日价格变动,
    0#柴油变动% AS 变动百分比
FROM oil_prices
-- 其他油品依次添加UNION ALL语句

内容的提问来源于stack exchange,提问作者Ritesh Prasad Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:47:56