to_datetime没有显示时间戳

时间:2017-10-07 22:36:06

标签: python pandas datetime

我在pandas数据框中有一个这样的列:

>>> print(df['SESSION_DATE'])
0    2008-05-20
1    2013-03-15
2    2014-10-14
3    2006-08-04
4    2006-11-20
Name: SESSION_DATE, dtype: datetime64[ns]

我正在尝试基于此创建一个新列。但我也希望时间戳显示出来。这是我试过的:

>>> df['NEW_COMPL_DTE'] = pd.to_datetime(df['SESSION_DATE'])
>>> print(df['NEW_COMPL_DTE'])
0    2008-05-20
1    2013-03-15
2    2014-10-14
3    2006-08-04
4    2006-11-20
Name: NEW_COMPL_DTE, dtype: datetime64[ns]

我希望在每个日期之后输出包含00:00:00。请指教。

3 个答案:

答案 0 :(得分:2)

如果未包含时间戳,则假定为00:00:00,因此pd.to_datetime未明确显示时间戳。

如果你要做的就是显示它,你可以这样做:

pd.to_datetime(s).dt.strftime('%y-%m-%d %h:%I:%s')
0    2008-05-20 00:00:00
1    2013-03-15 00:00:00
2    2014-10-14 00:00:00
3    2006-08-04 00:00:00
4    2006-11-20 00:00:00
Name: 1, dtype: object

或者,这更简单,但不是很整洁。如果您的列有字符串,则可以使用此选项。

s + ' 00:00:00'
0    2008-05-20 00:00:00
1    2013-03-15 00:00:00
2    2014-10-14 00:00:00
3    2006-08-04 00:00:00
4    2006-11-20 00:00:00
Name: 1, dtype: object

答案 1 :(得分:0)

我认为你应该使用strptime。像:

from datetime import datetime
mywanteddate = datetime.strptime("%s 00:00:00" % (df['SESSION_DATE']), "%Y-%m-%d %H:%M:%S")
print(mywanteddate) # 2008-05-20 00:00:00

答案 2 :(得分:0)

你应该可以使用这个

import numpy as np
import pandas as pd
from datetime import datetime
dates = [datetime(2008, 5, 20), datetime(2013, 3, 15), datetime(2012, 10, 14), datetime(2006, 8, 4), datetime(2006, 11,20)]
index = pd.DatetimeIndex(dates)
for i in index.astype(np.int64):
    print(pd.to_datetime(i, unit='ns'))

得到这个

2008-05-20 00:00:00
2013-03-15 00:00:00
2012-10-14 00:00:00
2006-08-04 00:00:00
2006-11-20 00:00:00