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

