为什么 DataFrame table spyder 和 python console 中的日期时间格式不同

Why does the datetime format in DataFrame table spyder and python console different

我正在尝试将我的非 datetime 类型列更改为类型 datetime 和格式 2020-03-31 。原始格式和类型是 31-Mar-20 和对象。在将其格式化为 2020-03-31 后,我尝试将类型更改为 datetime,但不知何故,如果我将其更改为类型 datetype,在我的 dataframe 中它总是包含 hh:mm:ss 但是当我在控制台中检查它时,它已经 datetype 而没有 hh:mm:ss。为什么会这样?

当我检查它时,这是我在 Spyder

的变量浏览器选项卡中的 DataFrame table

这是我在控制台查看的时候

covid.date
Out[156]: 
0    2020-03-02
1    2020-03-03
2    2020-03-04
3    2020-03-05
4    2020-03-06
5    2020-03-07

您可以通过提取日期部分将 datetimes 显式转换为 dates

covid['date'] = covid['date'].dt.date

那么他们应该去掉time部分,变成datetime.date而不是datetime

现在,您会注意到该列实际上是 object 类型(例如,使用 covid.info() 时)。 pandas,事实上,没有datetime.date作为标准数据类型。所以它确实将整个列视为存储 objects。

但是如果您访问单个元素,您会注意到它是一个 datetime.date。因此,例如,您可以执行以下操作:

covid['date'].iloc[0].year
# Out: 2020

并获得有意义的结果,而不是尝试在字符串上这样做。

例如,如果您想获得该列中每个元素的 year,您将不得不求助于 apply(因为您不能再调用 .dt),例如:

covid['year'] = covid['date'].apply(lambda x: x.year)