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
相关产品推荐
相关产品推荐

