python - `to_datetime` 限制或误用?值错误: Doesn't match format specified

标签 python python-3.x pandas datetime datetime-format

我似乎无法将包含日期字符串的系列转换为 datetime64dtype。 以下代码重现了该错误:

import pandas as pd

gud_date_s = pd.Series(["2019/12/31 00:00:00.0"]*100)
gud_date_s2 = pd.Series(["2261/12/31 00:00:00.0"]*100)
bad_date_s = pd.Series(["9999/12/31 00:00:00.0"]*100)
bad_date_s2 = pd.Series(["2262/12/31 00:00:00.0"]*100)


gd1 = pd.to_datetime(gud_date_s, format="%Y/%m/%d", yearfirst=True).dt.date # Correct
gd2 = pd.to_datetime(gud_date_s2 , format="%Y/%m/%d", yearfirst=True).dt.date # Correct
bd1 = pd.to_datetime(bad_date_s, format="%Y/%m/%d", yearfirst=True).dt.date 
#Returns {ValueError}time data 9999/12/31 00:00:00.0 doesn't match format specified.
bd2 = pd.to_datetime(bad_date_s2 , format="%Y/%m/%d", yearfirst=True).dt.date
#Returns {ValueError}time data 2262/12/31 00:00:00.0 doesn't match format specified.

所以接受年份的阈值似乎是2261。为什么?我该如何解决这个问题?

注意:诸如 9999/12/31 之类的日期是相关的,因此我想保持原样。

干杯

最佳答案

此处的值年份 9999 无效,因此需要 errors='coerce' 才能转换为 NaT:

bd1 = pd.to_datetime(bad_date_s, format="%Y/%m/%d", yearfirst=True, errors='coerce').dt.date

这里引发了错误,因为 limit ,年份是正确的,但最大月份和日期仅为 4 月 11 日:

不幸的是,这里的错误应该更清楚。

bd2 = pd.to_datetime(bad_date_s2 , format="%Y/%m/%d", yearfirst=True, errors='coerce').dt.date

print (pd.Timestamp.max)
2262-04-11 23:47:16.8547758

使用日期时间会引发错误:

from datetime import datetime

d = datetime(year=9999, month=12, day=31)
bd1 = pd.to_datetime(bad_date_s, format="%Y/%m/%d", yearfirst=True, errors='coerce').dt.date.fillna(d)
print (bd1)

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 9999-12-31 00:00:00

关于python - `to_datetime` 限制或误用?值错误: Doesn't match format specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934116/

相关文章:

python - Pandas:将单列(字段)字符串替换为每个字符串一列

python - mypy "is not valid as a type"对于使用 `type()` 构造的类型

python - 根据从字符串中删除的字符更新值

python - 为什么在 C 和 Python 中使用 OpenSSL API 时会得到不同的签名?

python - 使用 python 从 s3 加载文件及其子文件夹

python - 在Python中解压字典列表

python - 无法解析评论中的某些文本

python - 使用 "bag of usual phrases"查找不寻常的短语

python - 将(出发地、目的地、距离)转换为距离矩阵

python - 如何将数据帧的行与二维数组列表进行比较 - Python