首页 > 解决方案 > NameError:未定义名称“OutOfBoundsDatetime”

问题描述

我想将我的 DataFrame (df) 的列转换为 datetime 类型。所以我使用这样的功能pd.datetime

pd.to_datetime(df['date'])

但是我的 df 有一些日期为“0001-01-01”,所以我有一个错误告诉我:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00

所以,问题是当我尝试提取我的 df 上的所有行时,当我调用该pd.to_datetime()函数时出现“OutOfBoundsDatetime”错误。

我的代码

good_id = []
notGoog_id = []  
for i in range(len(my_df)):
    try:
       pd.to_datetime(my_df['date'][i])
       good_id.append(i)
    except OutOfBoundsDatetime:
       notGood_id.append(i)

但是当我这样做时,我有一个错误告诉我:

NameError: name 'OutOfBoundsDatetime' is not defined

有人知道为什么这个 Python 不能识别这个错误吗?

标签: pythonpandasdatetimenameerror

解决方案


您可以预先清理输入,而不是依赖异常。就像在尝试解析日期之前检查日期是否在某个范围内一样。

import re


dates = ["0001-01-01", "2021-03-01"]
regex = "(\\d{4})-(\\d{2})-(\\d{2})"

for date in dates:
    p = re.compile(regex)
    m = p.match(date)
    if int(m.group(1)) > 1970:
        print(f"{date} good")
    else:
        print(f"{date} bad")

推荐阅读