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

Python pandas导出CSV时日期格式转换结果异常问题排查

问题原因

你遇到的问题来自两个高频踩坑点:

  • 你用.dt.strftime('%Y-%m-%d')生成的YYYY-MM-DD是标准日期格式字符串,部分pandas版本在导出CSV时会自动把这类字符串隐式转回datetime类型,再用默认的斜杠分隔格式(M/D/YYYY,月日不补前导零)输出。而你用%Y%m%d生成的8位纯数字字符串不会被识别为日期,所以导出时会原样保留,结果正常。
  • 还有一种极常见的情况:你是用Excel打开的导出文件。Excel会自动把CSV里符合日期规则的YYYY-MM-DD格式,转换成本机系统默认的日期显示格式(中文Windows默认就是斜杠分隔的月/日/年),哪怕CSV文件本身存的是横杠格式,只是Excel显示时做了格式转换。
解决方法

选任意一种即可,第一种最稳妥:

方案1:导出时直接指定日期格式,跳过提前转字符串的步骤

不用写dt.strftime逻辑,date列保留datetime类型即可,在to_csv时显式指定日期格式参数,从根源避免隐式转换:

df['date'] = pd.to_datetime(df['date'], format='%m%d%Y')
df.to_csv(output_file, index=False, date_format='%Y-%m-%d')

方案2:转字符串后强制固定类型

如果你确实需要提前把日期列转为字符串存储,可以在转完格式后显式声明列类型为字符串,阻断pandas的自动类型识别:

df['date'] = pd.to_datetime(df['date'],format='%m%d%Y')
df['date'] = df['date'].dt.strftime('%Y-%m-%d').astype('string')
df.to_csv(output_file,index=False)
验证提示

如果怀疑是Excel自动改了显示格式,不要用Excel打开CSV,改用记事本、VS Code这类纯文本编辑器打开,就能看到文件里存储的真实内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:21:25