蟒分裂时间变量成日期和时间

问题描述:

我有一个包含COL像蟒分裂时间变量成日期和时间

df['time'] 

2012-11-28 07:01:05 

2012-11-28 07:01:05 

2012-11-28 07:03:45 

2012-11-28 07:06:02 

2012-11-28 07:10:05 

2012-11-28 07:12:04 

2012-11-28 07:13:01 

我想把它分成两个日期时间 COL

一个用于日期(数据帧2012-11 -28)和时间(7时13分01秒)

所以我不喜欢的是,谢胜利:

df['date']=df['time'].map(lambda x: dt.datetime(x.year,x.month,x.day)) - 工作OK!

但是当我键入

df['date']=df['time'].map(lambda x: dt.datetime(x.hour,x.minute,x.second)) 

我错误 - ValueError: day is out of range for month

我不知道该怎么办

+0

在DF [ '时间']是每个条目的日期时间对象? – trans1st0r

这个错误是因为第二map函数调用,您创建datetime具有小时,分钟,秒参数的对象。但是,前三个参数应该是年,月,日。因此,而不是一个月,是越来越微小的值是大于12

假设你已经df['time']对象datetime,你想要做这样的事情:

dates = map(lambda x: x.date(), df['time']) # get all dates 
times = map(lambda x: x.time(), df['time']) # get all times 

要得到字符串表示:

dates = map(lambda x: str(x.date()), df['time']) # get all dates 
times = map(lambda x: str(x.time()), df['time']) # get all times 
+0

谢谢你的回复, 但比tipe是时间而不是日期时间 所以你不能做时间计算例如 df.ix [1.'date'] - df.ix [2.'date']我想要做的事情 – maori

import datetime 

base = datetime.datetime(2012, 11, 28, 7,1,5) 
date_list = [base - datetime.timedelta(minutes=x) for x in range(0, 7)] 
dates = [ dt.date() for dt in date_list] 
times = [ dt.time() for dt in date_list] 
for _date, _time in zip(dates, times): 
    print('date=', _date, 'time=', _time) 

date= 2012-11-28 time= 07:01:05 
date= 2012-11-28 time= 07:00:05 
date= 2012-11-28 time= 06:59:05 
date= 2012-11-28 time= 06:58:05 
date= 2012-11-28 time= 06:57:05 
date= 2012-11-28 time= 06:56:05 
date= 2012-11-28 time= 06:55:05