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

如何从Pandas DataFrame的datetime类型列高效提取年、月、日?

优化Pandas提取日期年/月/日的方法

嘿,你的这个实现完全没问题,但其实Pandas有更高效、更简洁的原生方法来搞定这个需求!

你现在用的apply+lambda虽然能实现功能,但本质是逐行循环处理,当数据集很大的时候,性能会不如Pandas专门为datetime列设计的dt访问器。而且用dt的话,代码也更清爽,不用写重复的lambda语句。

第一种优化方式:直接用dt访问器赋值

这是最直观的改进,直接通过dt访问器获取日期的年、月、日属性:

data['MFR_YEAR'] = data['MFR_DATE'].dt.year
data['MFR_MONTH'] = data['MFR_DATE'].dt.month
data['MFR_DAY'] = data['MFR_DATE'].dt.day

第二种更紧凑的方式:用assign一次性生成多列

如果你想让代码更连贯,避免多次单独赋值,也可以用assign方法一次性完成所有新列的添加:

data = data.assign(
    MFR_YEAR=data['MFR_DATE'].dt.year,
    MFR_MONTH=data['MFR_DATE'].dt.month,
    MFR_DAY=data['MFR_DATE'].dt.day
)

这两种方法的核心都是利用Pandas的向量化操作,比逐行循环的apply性能提升不少——尤其是处理几十万甚至上百万行数据的时候,性能差距会非常明显。同时代码可读性也更高,别人一眼就能看懂你是在提取日期的各个组成部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:48