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

Pandas保存DataFrame为CSV时列名"9-7"被转日期格式问题求助

解决Pandas保存CSV时列名"9-7"被识别为日期的问题

这个问题我之前踩过坑!其实根本不是Pandas的to_csv把列名转成了日期格式——你可以用记事本打开生成的df.csv看看,列名其实还是原原本本的"9-7"。真正的“凶手”是Excel的自动识别机制:它会把带-的数字组合默认判定为日期,所以打开时才会显示成7-Sep。

下面给你几个实用的解决办法,按需选择:

方法1:给列名添加文本标识(最简单直接)

给列名加个单引号或者非数字前缀,让Excel无法把它识别成日期。比如:

# 给列名加上单引号作为前缀
df.rename(columns={"9-7": "'9-7'"}, inplace=True)
df.to_csv('df.csv', index=False)

这样Excel打开后列名会显示为'9-7',如果觉得单引号影响美观,也可以换成下划线或者其他符号,比如"col_9-7",后续需要还原列名也很容易。

方法2:用quoting参数强制包裹列名

借助Pandas的quoting参数,让非数字列名被双引号包裹,Excel会把带双引号的内容当成纯文本处理:

import csv
# 用csv.QUOTE_NONNUMERIC参数包裹非数字列名
df.to_csv('df.csv', index=False, quoting=csv.QUOTE_NONNUMERIC)

这个方法的好处是不需要修改原始DataFrame的列名,保存后的CSV里"9-7"会被双引号括起来,Excel打开时就不会乱转格式了。

方法3:手动修改Excel的导入设置(不用改代码)

如果不想动代码,也可以通过Excel的手动导入流程来避免自动识别:

  • 打开Excel,点击「数据」选项卡 → 选择「自文本/CSV」
  • 选中你的df.csv文件,在导入预览窗口中找到"9-7"对应的列
  • 把该列的「数据类型」改成「文本」,再完成导入
    这样列名就会完全保留原样了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:35:46