我在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
。请指教。
答案 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