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

pd.read_csv读取CSV时仅解析两日期列中一列的问题求助

问题:CSV读取时仅部分日期列被解析为datetime类型

现象

从CSV读取数据并指定解析日期列时,两个格式完全一致的日期列中,仅一列被转换为datetime类型,另一列仍保持object类型。

所用代码

dtype = {'col1':'category','col2':'category','Start Date':'str','End Date':'str'}
dates = ['col3','col4']
df = pd.read_csv(filepath,dtype=dtype,parse_dates=dates,dayfirst=False)

已尝试方案(均无效)

  • 调整dayfirst参数
  • 使用格式化器

更新说明

创建最小可复现数据集时,两列日期均能正常被解析为datetime类型,测试代码如下:

import pandas as pd

df = pd.DataFrame({'col1':['ABC','ABC','DCF','DCF'],
                   'Start Date':['12-31-2022','12-31-2022','12-31-2022','12-31-2022'],
                   'End Date':['12-31-2023','12-31-2023','12-31-2023','12-31-2023']
                  })

df.to_csv('test.csv',index=0)

df2 = pd.read_csv('test.csv',
                  dtype={'col1':'category','Start Date':'str','End Date':'str'},
                  parse_dates = ['Start Date','End Date'],
                  dayfirst=False
                 )
df2.info()

排查与解决建议

  1. 检查原始CSV数据
    确认未被解析的日期列是否存在脏数据,比如空值、格式不符的字符串、不可见字符等。可通过以下代码查看该列的所有唯一值:
print(df['col4'].unique())
  1. 移除日期列的dtype强制指定
    你在dtype中强制将日期列设为str,可能与parse_dates的解析逻辑冲突。尝试修改dtype配置:
dtype = {'col1':'category','col2':'category'}
dates = ['col3','col4']
df = pd.read_csv(filepath,dtype=dtype,parse_dates=dates,dayfirst=False)
  1. 手动转换并定位错误
    若自动解析失败,读取后手动转换日期列,并通过errors='coerce'标记转换失败的行:
df['col4'] = pd.to_datetime(df['col4'], dayfirst=False, errors='coerce')
# 查看转换失败的行
print(df[df['col4'].isna()])

内容的提问来源于stack exchange,提问作者Gian Flavio Violi Bravo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:40:41