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

如何移除数据日期分组 实现年月交叉宽表转长表(Excel/Python)

宽表转年月长表格式实现方案

这是典型的宽表逆透视转长表需求,用Excel自带功能或者Python脚本都能快速实现,也支持批量处理多份同结构数据集。

方法一:Excel 可视化操作

无需写复杂公式,操作一次即可复用规则批量处理:

  • 选中原始数据全部区域(包含表头),点击顶部菜单栏「数据」选项卡下的「从表格/区域」,将数据加载到Power Query编辑器。
  • 选中Year(年份)列,右键点击选择「逆透视其他列」,操作后原横向排列的月份列会自动拆为两列:一列为月份标识(属性列),一列为对应年月的数值(值列)。
  • 新增自定义列,把年份字段和转换为两位数字的月份字段拼接为YYYY-MM格式:如果表头是Jan(1月)这类带标注的格式,直接用替换规则把英文月份映射为对应数字即可。
  • 删除原有年份列、月份属性列,把自定义列重命名为Date(日期),数值列重命名为Number(数值),调整列顺序后点击「关闭并上载」就能得到目标格式的表。
  • 后续处理同结构文件时,只需要替换当前查询的数据源路径,点击刷新就能一键生成结果,不需要重复操作。

方法二:Python 批量处理方案

用pandas库处理效率更高,适合几十上百份文件的批量清洗场景:

  1. 先安装依赖库,在终端执行命令:
    pip install pandas openpyxl
  2. 单文件转换参考代码:
import pandas as pd

# 月份映射表,key和你原始表的月份表头保持一致即可
month_map = {
    "Jan(1月)": "01",
    "Feb(2月)": "02",
    "Mar(3月)": "03",
    "Apr(4月)": "04",
    "May(5月)": "05",
    "Jun(6月)": "06",
    "Jul(7月)": "07",
    "Aug(8月)": "08",
    "Sep(9月)": "09",
    "Oct(10月)": "10",
    "Nov(11月)": "11",
    "Dec(12月)": "12"
}

# 读取原始数据,csv格式文件换用pd.read_csv即可
df = pd.read_excel("你的原始数据文件路径.xlsx")

# 逆透视转换:保留年份列,其余月份列转为长表结构
df_long = df.melt(id_vars="Year(年份)", var_name="month_col", value_name="Number(数值)")

# 拼接生成标准年月日期列
df_long["Date(日期)"] = df_long["Year(年份)"].astype(str) + "-" + df_long["month_col"].map(month_map)

# 整理输出列顺序
result = df_long[["Date(日期)", "Number(数值)"]]

# 导出转换结果
result.to_excel("转换完成的结果.xlsx", index=False)
  1. 批量处理多份文件时,只需要增加文件夹遍历逻辑,循环读取每个文件套用上述转换规则,最终可以选择把所有结果合并为一张表,或者按原文件名单独导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:19:07