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

Pandas保存DataFrame至CSV时日期列格式未生效问题排查与解决

问题原因与解决方法

我之前也踩过这个坑,原因其实很明确:pandas的date_format参数只对pandas原生的datetime64[ns]类型列生效,而你的Date_Col是由Python原生datetime.date对象组成的列,所以调用to_csv时,这个参数被直接忽略了,pandas自动用了默认的%Y-%m-%d格式来序列化这些原生date对象。

至于你单独用strftime能得到正确格式,那是因为你直接调用了原生date对象的方法,和pandasto_csv的序列化逻辑完全是两回事。

正确解决方法(无需转字符串)

只需要把Date_Col转换成pandas的datetime64[ns]类型即可,转换后依然是日期类型,完全不影响后续脚本对DataFrame的使用:

import pandas as pd
from datetime import date
DATE_FORMAT = '%Y.%m.%d'

df = pd.DataFrame({'Col': [1.5, 2.3, 3.5], 'Date_Col': [date(2019, 1, 1), date(2019, 2, 1), date(2019, 3, 1)]})

# 关键步骤:将原生date列转为pandas datetime类型
df['Date_Col'] = pd.to_datetime(df['Date_Col'])

df.to_csv('df.csv', index=False, decimal=',', sep=';', date_format=DATE_FORMAT)

运行这段代码后,生成的CSV文件里的日期列就会是2019.01.01、2019.02.01这种你期望的格式了。同时df['Date_Col']依然是日期类型,后续的数据分析、日期运算等操作都能正常进行,完全不用改成字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:59:01