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

Google Colab中Pandas日期解析如何输出全部异常错误

Pandas日期序列异常值解析实现

场景说明

在Google Colab环境中对Pandas存储日期的Series做解析处理,需要打印所有解析器无法处理的异常值,本次测试用的日期序列最后2条为异常值。

测试日期序列代码

import pandas as pd
ser = pd.Series(['01 Jan 2010', '02-02-2011', '20120303', '2013/04/04', '2014-05-05','2015120','2014120'])
ser

原有代码及存在问题

原有实现代码如下:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from dateutil.parser import parse
print("before try")
try :
  print("inside try")
  print(ser.map(lambda x : parse(x)))
except Exception as e :
  print(e)

运行问题:

  • 整个map操作被包裹在全局try-except块中,遇到第一个解析错误就会直接中断整个遍历流程
  • 仅能打印第一个触发的解析错误,无法输出全部解析失败的条目,无法实现单元格多输出全部异常的需求

修复实现方案

将异常捕获逻辑下沉到单条数据的解析函数内部,单条数据解析失败不会中断整个序列的处理流程,过程中统一收集所有解析失败的异常值,全部处理完成后统一输出即可。
可运行代码如下:

import pandas as pd
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from dateutil.parser import parse
from dateutil.parser import ParserError

# 初始化存储容器
invalid_records = []

def date_parser(value):
    try:
        return parse(value)
    except ParserError:
        invalid_records.append(value)
        return pd.NaT

# 执行全量解析
result_ser = ser.apply(date_parser)

print("=== 解析后日期序列 ===")
result_ser
print("\n=== 全部解析失败的异常值 ===")
for val in invalid_records:
    print(f"解析失败条目:{val}")

运行后会正常输出所有合法日期的解析结果,同时完整列出2条异常值2015120、2014120,不会因为单条数据报错中断整体流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:36:26