数据集中 "Planted date" 的 dtype 是对象。我想将数据类型更改为日期时间。我使用 parse_dates 进行转换,但它不起作用

dtype of the "Planted date" in the dataset was object. I want to change the dtype to datetime. I used parse_dates to convert but it doesn't work

我想将数据类型更改为日期时间。我用parse_dates转换了,还是不行。

import pandas as pd
import altair as alt
import numpy as np

t_data = pd.read_csv('../TreesEdmonton.csv', parse_dates = ['PLANTED_DATE'])
t_data

This shows the data has been transformed

t_data.info() shows the dtype still object

这里是 link 下载 csv 文件, https://data.edmonton.ca/Environmental-Services/Trees/eecg-fc54/data

如果有人能帮助我,我将不胜感激。

如果无法解析日期,

parse_dates 将安静地失败。

您可以在加载数据框后手动解析日期来查看错误:

>>> pd.to_datetime(df.PLANTED_DATE)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
...
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1190-05-25 00:00:00

数据集中的多个条目的日期对于默认的 datetime64 表示来说太旧了。

解决此问题的一种方法是使用 errors='coerce',它将用 NaT:

替换有问题的时间
>>> df.PLANTED_DATE = pd.to_datetime(df.PLANTED_DATE, errors='coerce')
>>> df.PLANTED_DATE.dtype
dtype('<M8[ns]')

它现在有一个类似日期的数据类型。