Python处理25-Jan-24格式日期报错的解决方案咨询
Pandas日期解析问题的解决方法
针对你的EXPIRY_DT列(格式示例:25-Jan-24)出现的解析警告与错误,提供以下几种实用解决方案:
1. 清理数据后指定格式解析
错误提示unconverted data remains: "24"大概率是日期字符串存在多余空白或隐藏字符。先清理数据再解析:
# 去除字符串两端的空白字符 df_filtered['EXPIRY_DT'] = df_filtered['EXPIRY_DT'].str.strip() # 用指定格式解析 df_filtered['EXPIRY_DT'] = pd.to_datetime(df_filtered['EXPIRY_DT'], format='%d-%b-%y')
2. 指定英文locale适配月份缩写
若系统默认语言不是英文,%b无法识别Jan这类英文月份缩写,需先设置locale:
import locale # 根据系统设置合适的英文locale,Windows可用'English_US',Linux/macOS用'en_US.UTF-8' locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') # 执行日期解析 df_filtered['EXPIRY_DT'] = pd.to_datetime(df_filtered['EXPIRY_DT'], format='%d-%b-%y')
3. 用mixed格式自动推断(Pandas 2.0+)
如果不想纠结格式细节,Pandas 2.0及以上版本支持format='mixed',配合dayfirst=True确保日在前的解析逻辑:
df_filtered['EXPIRY_DT'] = pd.to_datetime(df_filtered['EXPIRY_DT'], format='mixed', dayfirst=True)
4. 忽略警告用默认解析(兼容老版本)
若使用低版本Pandas,可直接用默认的dateutil解析,添加errors='coerce'将无效日期转为NaT,同时可选择性忽略警告:
import warnings # 忽略日期解析的UserWarning warnings.filterwarnings("ignore", category=UserWarning) # 解析日期 df_filtered['EXPIRY_DT'] = pd.to_datetime(df_filtered['EXPIRY_DT'], errors='coerce')
内容的提问来源于stack exchange,提问作者Rishikesh Sahani
相关产品推荐
相关产品推荐

