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

Python:将pandas Timestamp转换为ordinal格式的方法及疑问

嘿,我来帮你搞定这个Timestamp转ordinal的效率问题!你现在用for循环逐个处理确实有点拖慢速度,pandas本身就提供了更高效的矢量化操作,完全不用手动遍历整列。

高效转换pandas Timestamp列为ordinal格式的方法

推荐方法:用.dt访问器做矢量化转换

pandas的datetime类型列有个专门的.dt访问器,能直接对整列调用datetime相关方法,包括toordinal(),这是最高效的方式,比for循环和apply快得多,尤其是数据量大的时候:

import pandas as pd

# 假设你的DataFrame是df,Timestamp列名为'timestamp_col'
df['ordinal_col'] = df['timestamp_col'].dt.toordinal()

简单验证效果

给你举个小例子看看实际运行结果:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    'timestamp_col': [pd.Timestamp('2019-12-25'), pd.Timestamp('2020-01-01')]
})

# 一键转换整列
df['ordinal_col'] = df['timestamp_col'].dt.toordinal()

print(df)

输出结果:

timestamp_col  ordinal_col
0     2019-12-25        737418
1     2020-01-01        737419

和你手动单个转换的结果完全一致,但效率提升可不是一点半点。

为什么不推荐用原生datetime的toordinal?

你之前试的dt.datetime.toordinal(a)是针对Python原生datetime对象的,虽然pandas的Timestamp兼容这个方法,但你要是逐个处理的话还是绕不开循环。而用pandas自带的.dt矢量化操作,直接对整列生效,既简洁又高效,完全没必要转成原生datetime再处理。

另外,如果你之前考虑用apply的话(比如df['timestamp_col'].apply(lambda x: x.toordinal())),虽然也能实现,但本质还是逐元素处理,速度远不如.dt访问器的矢量化操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:26:46