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

使用Pandas XlsxWriter将日期列格式化为'mmm-yy'失败问题排查

问题原因

Pandas 在调用 to_excel() 写入 Excel 时,会自动为 datetime 类型的列生成默认的 Excel 日期格式,这个默认格式的优先级高于后续通过 set_column() 设置的自定义格式,导致你设置的 mmm-yy 格式无法生效。

解决方案

方案一:直接在 to_excel() 中指定日期格式(推荐)

通过 datetime_format 参数直接指定日期输出格式,无需后续手动设置列格式,代码更简洁:

import pandas as pd

df = pd.DataFrame({'test_date': pd.date_range('1/1/2022', periods=12, freq='M')})

with pd.ExcelWriter('format-01.xlsx', engine='xlsxwriter') as writer:
    # 写入时直接指定日期格式为'mmm-yy'
    df.to_excel(writer, sheet_name='test', index=False, datetime_format='mmm-yy')
    workbook = writer.book
    worksheet = writer.sheets['test']
    # 仅设置列宽即可
    worksheet.set_column('A:A', 30)

方案二:手动覆盖单元格格式

如果需要保留手动设置格式的逻辑,可以遍历日期列的单元格,为每个单元格单独应用自定义格式(跳过表头行):

import pandas as pd

df = pd.DataFrame({'test_date': pd.date_range('1/1/2022', periods=12, freq='M')})

with pd.ExcelWriter('format-01.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='test', index=False)
    workbook = writer.book
    worksheet = writer.sheets['test']
    
    # 创建自定义日期格式
    custom_date_format = workbook.add_format({'num_format': 'mmm-yy'})
    
    # 遍历日期列的所有数据行(从第2行开始,索引从1起)
    for row_idx in range(1, len(df) + 1):
        # 获取对应行的日期值,写入单元格并应用格式
        worksheet.write(row_idx, 0, df.iloc[row_idx - 1]['test_date'], custom_date_format)
    
    # 设置列宽
    worksheet.set_column('A:A', 30)

两种方案都能让 Excel 中的日期列显示为 Jan-22、Feb-22 这类符合 mmm-yy 格式的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:35:17