提问人:JA-pythonista 提问时间:2/11/2020 最后编辑:JA-pythonista 更新时间:8/14/2023 访问量:15886
如何修复 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
问:
我正在尝试将列“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 并不明智。你认为我可以把它们改成什么样子?还是做?
非常感谢您的意见。谢谢
答:
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')
评论
0000-00-00
pd.to_datetime(Dashboard["travel_start"],errors='coerce')
0000-00-00
pd.to_datetime(Dashboard["travel_start"],errors='coerce')