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

如何在Pandas中将日期列解析为datetime类型而非object类型?

问题描述

我尝试用pandas.read_csv的parse_dates参数将CSV中的published_at列解析为datetime类型,但执行后该列仍为object类型:

df = pd.read_csv(path, parse_dates=['published_at']) 
df.info()

输出显示:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 6 columns):
 #   Column           Non-Null Count   Dtype  
---  ------           --------------   -----  
 0   name             100000 non-null  object 
 1   salary_from      48041 non-null   float64
 2   salary_to        53029 non-null   float64
 3   salary_currency  64733 non-null   object 
 4   area_name        100000 non-null  object 
 5   published_at     100000 non-null  object 
dtypes: float64(2), object(4)
memory usage: 4.6+ MB

我尝试过多种解析方法都无法将其转为datetime类型,请问该如何解决?

解决方案

1. 先确认日期列的实际格式

首先查看published_at列的样本数据,确认日期的具体格式(比如是否带时区、特殊分隔符、非标准格式):

print(df['published_at'].head(10))
# 或者查看唯一值样本
print(df['published_at'].unique()[:10])

这一步能帮你定位自动解析失败的原因——通常是pandas无法识别非标准日期格式。

2. 读取时指定日期格式

如果已经明确日期格式,在read_csv中通过date_parser参数指定解析逻辑:

from datetime import datetime

# 替换为你的实际日期格式,比如'%Y-%m-%d %H:%M:%S'
date_format = '%Y-%m-%d %H:%M:%S'
df = pd.read_csv(
    path,
    parse_dates=['published_at'],
    date_parser=lambda x: datetime.strptime(x, date_format)
)

3. 读取后强制转换

如果读取时自动解析失败,可以先读取为object类型,再用pd.to_datetime强制转换,同时指定格式和错误处理:

df = pd.read_csv(path)
# 替换为你的实际日期格式
df['published_at'] = pd.to_datetime(df['published_at'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
  • errors='coerce'会将无法解析的值转为NaT,方便后续排查异常数据;
  • 如果不确定格式,可以去掉format参数,加上infer_datetime_format=True让pandas自动推断(大数据量下速度略慢,但更灵活):
    df['published_at'] = pd.to_datetime(df['published_at'], infer_datetime_format=True, errors='coerce')
    

4. 检查异常值

如果转换后出现大量NaT,说明存在不符合格式的异常数据,可以通过以下代码找出这些异常值:

invalid_dates = df[df['published_at'].isna()]['published_at']
print(invalid_dates.unique())

针对这些异常值,可以选择清理、修正后再重新转换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:19