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

为何用datetime.strptime转换DataFrame的time列未得到datetime类型?

问题解析:为什么转换后time列还是Series类型?

你这里其实是混淆了两个关键概念:Series容器的类型和Series内部元素的数据类型。

核心误解

df_sales['time']本身就是一个pandas.core.series.Series对象——不管这个列里存的是字符串、数字还是日期时间,这个列的对象类型永远是Series。你真正需要验证的是列中元素是否变成了datetime类型,而非整个列的对象类型。

如何正确检查转换结果

别用type(df_sales['time'])来判断转换效果,而是用以下方式查看列的元素数据类型:

  • 查看单个列的元素类型:df_sales['time'].dtype
  • 查看整个DataFrame所有列的元素类型:df_sales.dtypes

执行你的转换代码后,再运行上面的命令,你会发现time列的类型已经变成了datetime64[ns],这就说明转换成功了。

更高效的转换方法

另外,pandas提供了专门的日期转换函数pd.to_datetime(),比apply(lambda x: ...)更高效且简洁,推荐使用:

import pandas as pd
df_sales['time'] = pd.to_datetime(df_sales['time'], format='%Y-%m-%d')

验证示例

假设转换前df_sales['time'].dtype是object(字符串类型),转换后执行df_sales['time'].dtype会返回datetime64[ns],而type(df_sales['time'])依然是pandas.core.series.Series——这完全是正常的,因为Series就是pandas用来存储单列数据的标准容器。

内容的提问来源于stack exchange,提问作者Daniel Garcia De Cceres Herran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:11