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

如何通过操作现有DataFrame创建含YYYY-MM列的目标DataFrame?

解决MultiIndex列DataFrame转YYYY-MM日期格式长表问题

方法步骤:

  1. 格式化列名:将原始的年份-月份多层列索引(MultiIndex)转换为YYYY-MM格式的字符串,注意给月份补零保证两位格式。
  2. 宽表转长表:使用Pandas的melt()函数将宽格式DataFrame转换为长格式,直接得到日期列和数值列。

示例代码:

假设你的原始DataFrame名为df,列是包含年份(第一层)和月份(第二层)的MultiIndex:

import pandas as pd

# 1. 把MultiIndex列转为YYYY-MM格式的字符串
df.columns = [f"{year}-{month:02d}" for year, month in df.columns]

# 2. 转换为目标长表结构
result_df = df.melt(var_name="YYYY-MM", value_name="数值")

补充说明:

  • f"{year}-{month:02d}":通过格式化字符串拼接年份和月份,02d确保1-9月自动补零(比如1月转为01),保证日期格式统一。
  • melt():自动将所有列名映射为YYYY-MM列的取值,对应单元格的数值全部归入数值列,完全匹配需求结构。

如果你的原始列名不是MultiIndex(比如列名是2020_1这类字符串),可以先拆分再格式化:

# 处理"年份_月份"格式的列名
df.columns = [
    f"{y}-{m:02d}" 
    for col in df.columns 
    for y, m in [col.split("_")]
]
result_df = df.melt(var_name="YYYY-MM", value_name="数值")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:25:17