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

pandas读取CSV转字符串日期为datetime去时间及内核重启类型回退问题

问题诱因

  1. 自定义日期解析函数存在大小写语法错误:你定义的parse_dt函数入参是小写x,但列表推导式中遍历的是大写X。之前运行时能成功,是因为你此前的运行环境中存在全局变量X存储了日期列的值,重启内核后全局变量清空,函数运行报错,pd.read_csv遇到日期解析失败会自动回退为直接读取原始字符串,因此列类型变回object。
  2. 自定义解析逻辑冗余且容错性差:你在解析后将值转为了Python原生date对象,该对象在Pandas中存储时本身就会被识别为object类型,仅当你直接返回datetime对象时Pandas才会自动转为datetime64[ns]类型,逻辑冲突也会导致解析不稳定。

彻底解决方法

不需要自定义解析函数,直接使用Pandas自带的date_format参数完成解析,稳定性和效率远高于自定义函数,且不会出现类型回退问题:
首先导入必要依赖:

import pandas as pd

然后读取CSV并处理日期列:

# parse_dates参数填入你实际的日期列名,如你之前用的'Date Column'
df = pd.read_csv(r'DataFile.csv', parse_dates=['Date'], date_format='%d%b%Y %H:%M:%S')
# 去除时间部分,仅保留日期,且保持datetime64[ns]类型不变
df['Date'] = df['Date'].dt.floor('D')

如果确实需要将日期列转为Python原生date对象(该场景下列类型本身就是object,属于正常情况),可以用以下代码:

df['Date'] = df['Date'].dt.date

完成后调用df.info()即可确认日期列类型,重启内核后重新运行也不会出现类型回退问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:12:02