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

如何在Pandas中将DataFrame整列的Excel日期数字转为日期格式

批量转换Excel日期序列号为Pandas日期类型

针对你50万+行的数据集,绝对不要用循环或apply,因为效率极低。以下是两种高效的矢量化解决方案:

方法1:用Pandas原生pd.to_datetime直接转换

利用Excel日期的本质是「从1899-12-30开始的天数」这一特性,直接指定origin和unit参数实现批量转换:

import pandas as pd

# 批量转换整列,自动处理50万+行
ddf['nwdob_l1'] = pd.to_datetime(ddf['dob_l1'], unit='D', origin='1899-12-30')

如果需要处理无效值(比如非数字的单元格),可以加上errors='coerce'将其转为NaT(Pandas的缺失日期标记):

ddf['nwdob_l1'] = pd.to_datetime(ddf['dob_l1'], unit='D', origin='1899-12-30', errors='coerce')

方法2:用时间增量叠加实现

通过Pandas的时间戳对象加上天数增量,同样是矢量化操作,效率拉满:

import pandas as pd

base_date = pd.Timestamp('1899-12-30')
ddf['nwdob_l1'] = base_date + pd.to_timedelta(ddf['dob_l1'], unit='D')

为什么你之前的代码出错?

你用format='%d%m%y'是把数字当成字符串格式的日期来解析,比如12150会被拆解为日=12、月=15、年=00,最终得到错误的2050-01-12。但这些数字本质是Excel的日期序列号,需要按「天数增量」来转换,而非字符串格式。

验证你的例子

对于值12150,两种方法都会计算出1933-04-06,和你预期的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:01:03