2017-10-07 53 views
0

我有这样的熊猫数据帧列:to_datetime没有显示时间戳

>>> 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。请指教。

+0

如果你想要的输出在所有行中都只是'00:00:00',为什么不直接在那里写它而不是使用datetime? – Worm

回答

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 
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 
+0

尝试运行此操作,然后发布到此处。对于python2.7, –

+0

,打印效果很好。但是对于python3,它应该是print(“string”) – ray

+0

不,这不是问题。 'df ['SESSION_DATE']'是一串字符串日期。您如何期待'%df''工作? –

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