为什么 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
作为标准数据类型。所以它确实将整个列视为存储 object
s。
但是如果您访问单个元素,您会注意到它是一个 datetime.date
。因此,例如,您可以执行以下操作:
covid['date'].iloc[0].year
# Out: 2020
并获得有意义的结果,而不是尝试在字符串上这样做。
例如,如果您想获得该列中每个元素的 year
,您将不得不求助于 apply
(因为您不能再调用 .dt
),例如:
covid['year'] = covid['date'].apply(lambda x: x.year)
我正在尝试将我的非 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
作为标准数据类型。所以它确实将整个列视为存储 object
s。
但是如果您访问单个元素,您会注意到它是一个 datetime.date
。因此,例如,您可以执行以下操作:
covid['date'].iloc[0].year
# Out: 2020
并获得有意义的结果,而不是尝试在字符串上这样做。
例如,如果您想获得该列中每个元素的 year
,您将不得不求助于 apply
(因为您不能再调用 .dt
),例如:
covid['year'] = covid['date'].apply(lambda x: x.year)