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

Pandas处理DataFrame日期列:保持date格式与自定义格式问题

解决方案

一、确保字段始终保持date格式

问题核心是Excel没有严格匹配Python date类型的格式,pandas读取Excel时会默认把日期类数据转为datetime64类型。可以通过两种方式处理:

  • 方式1:读取后强制转换
    每次读取Excel文件后,重新执行转换代码,保证DataFrame中该字段为Python date对象:

    import pandas as pd
    df = pd.read_excel("your_file.xlsx")
    df["Value date"] = pd.to_datetime(df["Value date"]).dt.date
    
  • 方式2:写入时存为字符串(需权衡)
    如果不需要对该字段做日期运算,可以把date对象转为固定格式的字符串后写入,读取后会保持字符串格式:

    df["Value date"] = pd.to_datetime(df["Value date"]).dt.strftime("%d/%m/%Y")
    df.to_excel("your_file.xlsx", index=False)
    

二、指定显示格式为"31/07/2023"

分两种场景处理:

场景1:保留日期可运算特性

用xlsxwriter引擎设置Excel单元格的日期显示格式,既保留日期类型,又按指定格式展示:

  1. 先安装依赖:
    pip install xlsxwriter
    
  2. 写入时配置格式:
    import pandas as pd
    
    # 保持字段为datetime类型(不要转成date对象,否则无法设置格式)
    df["Value date"] = pd.to_datetime(df["Value date"])
    
    writer = pd.ExcelWriter("your_file.xlsx", engine="xlsxwriter")
    df.to_excel(writer, index=False, sheet_name="Sheet1")
    
    # 创建日期格式
    workbook = writer.book
    worksheet = writer.sheets["Sheet1"]
    date_format = workbook.add_format({"num_format": "dd/mm/yyyy"})
    
    # 应用格式到目标列(假设"Value date"是第2列,索引从0开始为1)
    worksheet.set_column(1, 1, None, date_format)
    
    writer.close()
    
    读取后再执行df["Value date"] = pd.to_datetime(df["Value date"]).dt.date,即可回到Python date对象。

场景2:无需日期运算

直接将日期转为指定格式的字符串,写入后Excel显示为31/07/2023:

df["Value date"] = pd.to_datetime(df["Value date"]).dt.strftime("%d/%m/%Y")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:52:17