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

如何将pandas._libs.tslibs.timestamps.Timestamp列表或Series转换为datetime.datetime?

嘿,我刚好碰到过一模一样的需求,其实解决起来很简单——你只需要借助apply()方法,对Series里的每一个Timestamp元素逐个调用to_pydatetime()就可以了。

具体实现代码

先拿你提供的示例数据来演示:

import pandas as pd
import datetime

# 生成示例数据
df = pd.DataFrame({"year": [2015, 2016], "month": [2, 3], "day": [4, 5], "hour": [2, 3]})
# 转换为Timestamp类型的Series
ts_series = pd.to_datetime(df)

# 核心转换步骤:用apply遍历每个元素,调用to_pydatetime()
dt_series = ts_series.apply(lambda x: x.to_pydatetime())

# 验证结果
print(dt_series)
# 输出:
# 0   2015-02-04 02:00:00
# 1   2016-03-05 03:00:00
# dtype: object

print(type(dt_series.loc[0]))
# 输出:<class 'datetime.datetime'>

为什么直接用to_pydatetime()对整列无效?

因为to_pydatetime()是单个Timestamp对象的实例方法,只能作用于单独的Timestamp元素,没办法直接作用于整个Series。而apply()会帮你遍历Series里的每一个元素,逐个执行转换操作,刚好解决这个问题。

针对DataFrame列的实际场景

如果你的数据是从Excel导入后处理得到的DataFrame列(比如某列存储的是Timestamp类型数据),处理逻辑完全一致:

# 假设你的DataFrame有一列名为'ts_col',存储Timestamp类型数据
df['dt_col'] = df['ts_col'].apply(lambda x: x.to_pydatetime())

大数据量场景的替代方案

如果你的数据量很大,用列表推导式的性能会比apply()略好一点,效果完全相同:

dt_series = pd.Series([x.to_pydatetime() for x in ts_series])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:22:35