Python中使用Pandas解析日期失败问题求助
解决Pandas解析12小时制日期格式的问题
看起来你遇到的核心问题是日期格式符使用错误导致的解析失败,我来帮你理清问题并修复代码:
问题根源
你的日期字符串是'05/03/2016 11:40:00 PM',包含12小时制的小时数(11)、完整的时分秒,以及AM/PM标识。但你代码里误用了%H(这是24小时制的小时格式符),同时错误提示里的格式'%d/%m/%Y %I %p'又漏掉了时分秒的部分,这两种情况都会导致格式不匹配。
修复后的完整代码
import pandas as pd # 读取CSV数据 df = pd.read_csv("crimes12-18.csv") # 使用正确的格式符解析日期:%I对应12小时制小时,保留时分秒和%p标识 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y %I:%M:%S %p') # 设置时间索引 df.index = pd.DatetimeIndex(df['Date']) # 用dt属性提取时间字段,比apply更高效简洁 df['time_hour'] = df['Date'].dt.hour df['month'] = df['Date'].dt.month df['year'] = df['Date'].dt.year # 筛选排除2017年的数据 df = df[df['year'] != 2017] df.head()
关键格式符说明
%I:12小时制的小时数(01-12),完美匹配你日期里的11%H:24小时制的小时数(00-23),这里不适用%p:AM/PM标识,对应你日期里的PM%M(分钟)、%S(秒):必须和日期字符串里的40:00部分对应上
额外优化建议
如果你的CSV中存在少数格式不规范的日期,可以添加errors='coerce'参数,将无法解析的日期转为NaT(缺失时间值),避免整个解析流程失败:
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y %I:%M:%S %p', errors='coerce')
内容的提问来源于stack exchange,提问作者Iwa Greenwood
相关产品推荐
相关产品推荐

