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

如何用Pandas read_excel保留dd/mm/yyyy格式日期为字符串不解析?

问题:读取Excel日期列时无法保留原始字符串格式

我有一份Excel文件,其中「Created Date」列显示格式为dd/mm/yyyy,单元格数据类型设为general。尝试用pandas读取该文件,希望将此列保留为原始字符串格式、不解析日期,但多次尝试都出现问题:

尝试的方法及错误结果

方法1:使用converters参数指定转换为字符串

df = pd.read_excel(f_in 
               ,converters={'Created Date': str}
               ,engine='openpyxl')

方法2:使用dtype参数指定字符串类型

df = pd.read_excel(f_in 
                   ,dtype={'Created Date': str}
                   ,engine='openpyxl')

两种方法得到的结果均不符合预期:第一行日期被错误解析为mm/dd/yyyy格式后转为字符串,而非保留原始的dd/mm/yyyy格式:

for ee in df['Created Date'][0:3]:
    print(ee, type(ee), '\n')

# 输出结果
2019-04-11 00:00:00 <class 'str'>   ## 此日期被错误解析后转字符串,未保留原样
18/11/2019 <class 'str'> 
25/11/2019 <class 'str'> 

方法3:添加parse_dates=False参数

df = pd.read_excel(f_in
                   ,parse_dates=False
                   ,engine='openpyxl')

结果第一行直接被解析为datetime类型,依然不符合要求:

# 输出结果
2019-04-11 00:00:00 <class 'datetime.datetime'> 
18/11/2019 <class 'str'> 
25/11/2019 <class 'str'> 

解决方法

经排查发现,Excel中「Created Date」列的首个单元格实际是Date类型,并非设置的general类型。将整列统一改为general类型后,再次使用parse_dates=False读取:

df = pd.read_excel(f_in
                   ,parse_dates=False
                   ,engine='openpyxl')

得到如下结果:

# 输出结果
43566 <class 'int'> 
18/11/2019 <class 'str'> 
25/11/2019 <class 'str'> 

此时可以根据数据类型(判断是否为int)或是否包含/,将Excel日期序列号和字符串格式的日期统一转换为datetime类型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:56