将dataframe列从对象转换为日期而不是datetime

时间:2019-07-07 15:50:17

标签: python pandas dataframe

我正在使用python 3.7版。

我有一个数据框df,其中包含一列称为TDate的列。

该列如下所示。

 2019-01-01 00:00:00
 2019-01-02 00:00:00
 2019-01-03 00:00:00
 2019-01-04 00:00:00

当我执行df.dtypes时,它告诉我该列的类型为object。

然后我在下面一行,

  

myDates = pd.to_datetime(df ['TDate'])

所以myDates是熊猫系列。

但是,如果我访问此myDates系列的一个元素并检查它告诉我的类型是libs.tslib.timestamps.Timestamp

我只想将原始dataframe列从对象转换为yyyy-mm-dd格式的日期。最好的方法是什么?

我看过将时间戳转换为日期,但这没有用,因为时间戳是字符串文字而不是整数。

2 个答案:

答案 0 :(得分:2)

使用Series.dt.floor从列中删除时间信息(或最好在每个日期时间将其设置为默认00:00:00值):

myDates = pd.to_datetime(df['TDate']).dt.floor('d')
#for save to same column
#df['TDate'] = pd.to_datetime(df['TDate']).dt.floor('d')

Series.dt.normalize

myDates = pd.to_datetime(df['TDate']).dt.normalize()
#for save to same column
#df['TDate'] = pd.to_datetime(df['TDate']).dt.normalize()

如果使用:

myDates = pd.to_datetime(df['TDate']).dt.date

然后输出的是python date对象,因此大多数类似datetime的函数都会失败。

答案 1 :(得分:1)

此代码段会将时间戳转换为日期

df['TDate']= pd.to_datetime(df['TDate']).dt.date