如何使用Excel Power Query按列值分组并整理数据格式?
数据行列整理方案
以下是针对需求的具体操作步骤,以Excel Power Query和Python Pandas两种常用工具为例:
方法一:Excel Power Query(可视化操作)
- 导入源数据到Power Query:选中数据区域,点击「数据」选项卡 → 「从表格/区域」,确认数据包含表头。
- 添加自定义列:点击「添加列」选项卡 → 「自定义列」,输入公式:
Text.Combine({[类型], Text.From([数值])}, ": "),将指标类型和数值合并为带标识的文本。 - 分组聚合:选中「项目」和「日期」列,点击「转换」选项卡 → 「分组依据」,分组列选择这两列,新列名设为「合并结果」,操作选「所有行」,再编辑公式为:
Text.Combine([自定义列], "#(lf)"),用换行符把同一项目同一日期的预算、实际文本合并。 - 透视日期列:选中「日期」列,点击「转换」选项卡 → 「透视列」,值列选择「合并结果」,高级选项选择「不要聚合」,完成后即可得到目标格式。
- 加载回Excel:点击「关闭并上载」,将整理好的数据导入表格。
方法二:Python Pandas(代码实现)
如果习惯用代码处理,可参考以下脚本:
import pandas as pd # 读取源数据(假设为csv格式,根据实际数据源调整) df = pd.read_csv("你的数据源文件.csv") # 合并类型与数值为带标识的文本 df["合并值"] = df["类型"] + ": " + df["数值"].astype(str) # 按项目和日期分组,用换行符合并同一分组下的文本 grouped_df = df.groupby(["项目", "日期"])["合并值"].apply("\n".join).reset_index() # 透视得到目标结构 result_df = grouped_df.pivot(index="项目", columns="日期", values="合并值") # 清理列名并重置索引 result_df.columns.name = None result_df = result_df.reset_index() # 输出或保存结果 print(result_df) result_df.to_excel("整理后数据.xlsx", index=False)
关键说明
你之前尝试分组和透视未得到理想结果,核心原因是没有先将「预算/实际」的标识与数值绑定后再聚合,直接透视会导致数值被默认聚合(如求和、平均值),而不是保留两类数值的区分展示。
内容的提问来源于stack exchange,提问作者Gloria Santin




