如何修复ParserError:年份0超出范围:0000-00-00,使用Python Pandas到_日期时间方法

rdlzhqv9  于 2022-12-16  发布在  Python
关注(0)|答案(1)|浏览(359)

我正在尝试将列“travel_start”转换为日期时间对象。

Dashboard["travel_start"] = pd.to_datetime(Dashboard["travel_start"])

但我得到了以下错误:

ParserError: year 0 is out of range: 0000-00-00

当我尝试从 Dataframe 中的列过滤“travel_start”列时,我看到了以下日期:

4922     0000-00-00
5592     0000-00-00
6647     0000-00-00
6796     0000-00-00
6941     0000-00-00
8223     0000-00-00
8391     0000-00-00
10137    0000-00-00
10197    0000-00-00
10744    0000-00-00
11128    0000-00-00
12304    0000-00-00
12511    0000-00-00
13307    0000-00-00
13681    0000-00-00
14381    0000-00-00
15160    0000-00-00
16330    0000-00-00
17734    0000-00-00
18148    0000-00-00
19389    0000-00-00
19643    0000-00-00
20372    0000-00-00
21412    0000-00-00
21757    0000-00-00
21879    0000-00-00
21978    0000-00-00
23216    0000-00-00
24375    0000-00-00
25660    0000-00-00

对这个的统计显示,他们是56次发生这种情况,我不认为这是聪明的使用错误,以铸造它到NaT。你认为我可以改变他们?或做什么?
请您的意见是高度赞赏。谢谢

kse8i1jr

kse8i1jr1#

Pandas使用panda.Timestamp类型来存储日期和时间,而不是python的datetime. datetime。
时间戳的最小/最大值为:

  • pd.Timestamp.min # return Timestamp('1677-09-21 00:12:43.145224193')
  • pd.Timestamp.max # return Timestamp('2262-04-11 23:47:16.854775807')

在您的案例中,我们可以清楚地看到这些行的日期只是缺失/未知。
正如@jezrael建议的那样,使用pd.to_datetime(Dashboard["travel_start"],errors='coerce')并将所有NaT视为未知。

相关问题