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

Python Pandas读取带AM/PM格式Datetime报错求助

解决CSV日期列转换报错问题

问题分析

你遇到的核心问题是:CSV文件中timestamp列的原始格式为mm/dd/YYYY hh:mm:ss AM/PM,但pandas读取后显示为07-06 19:30这类截断格式,导致指定格式转换时触发ValueError。这大概率是因为pandas读取CSV时自动对日期列做了部分解析,丢失了原始字符串的完整信息。

解决方案

1. 强制读取原始字符串,避免自动解析

读取CSV时,指定timestamp列的数据类型为字符串,确保原始日期字符串被完整保留:

import pandas as pd
# 读取CSV,强制timestamp列为字符串类型
df = pd.read_csv('你的文件路径.csv', dtype={'timestamp': str})

或者直接禁用自动日期解析:

df = pd.read_csv('你的文件路径.csv', parse_dates=False)

2. 重新执行日期格式转换

此时timestamp列是完整的原始字符串,再用你原来的代码执行转换:

df['timestamp'] = pd.to_datetime(df['timestamp'], format='%m/%d/%Y %I:%M:%S %p')

3. 处理可能的混合格式问题

如果执行后仍报错,说明CSV中可能存在混合格式的日期(比如部分行是截断格式)。可以先强制转换并标记错误行:

df['timestamp'] = pd.to_datetime(df['timestamp'], format='%m/%d/%Y %I:%M:%S %p', errors='coerce')
# 查看转换失败的行,排查原始数据问题
print(df[df['timestamp'].isna()])

或者让pandas自动推断日期格式(适合存在多种日期格式的场景):

df['timestamp'] = pd.to_datetime(df['timestamp'], infer_datetime_format=True)

4. 验证CSV原始内容

如果以上方法都无效,建议用纯文本编辑器(如Notepad++)打开CSV文件,确认timestamp列的所有行格式是否统一——避免Excel等工具自动格式化带来的视觉误导。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:24:32