如何修复 ParserError:年份 0 超出范围:0000-00-00 使用 Python Pandas to_datetime方法

How to fix ParserError: year 0 is out of range: 0000-00-00 with Python Pandas to_datetime method

提问人:JA-pythonista 提问时间:2/11/2020 最后编辑:JA-pythonista 更新时间:8/14/2023 访问量:15886

问:

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

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

但是我收到以下错误:

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

当我尝试从数据帧中的列中过滤列“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 并不明智。你认为我可以把它们改成什么样子?还是做?

非常感谢您的意见。谢谢

pandas dataframe datetime 字符串到日期时间

评论

1赞 Umar.H 2/11/2020
你能发布几行数据吗,你的错误是不可重现的。但听起来你需要指定格式,也不是有效的日期时间对象,将其转换为 NaT0000-00-00pd.to_datetime(Dashboard["travel_start"],errors='coerce')
0赞 JA-pythonista 2/12/2020
非常感谢您的回答。我想知道日期是否正确,或者这个日期的正确方式是什么 0000-00-00
3赞 jezrael 2/12/2020
不幸的是,日期时间无效。0000-00-00
0赞 JA-pythonista 2/12/2020
你有什么建议?我胁迫他们去NaT?
3赞 jezrael 2/12/2020
@A.JT - 是的,使用pd.to_datetime(Dashboard["travel_start"],errors='coerce')

答:

0赞 Waldemar Walo 3/17/2022 #1

熊猫使用熊猫。Timestamp 类型来存储带有时间的日期,而不是 pythons datetime.datetime。

TimeStamp 的最小值/最大值为:

  • 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建议的那样,使用并将所有 NaT 视为未知。pd.to_datetime(Dashboard["travel_start"],errors='coerce')