蟒分裂时间变量成日期和时间
问题描述:
我有一个包含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
我不知道该怎么办
答
这个错误是因为第二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
在DF [ '时间']是每个条目的日期时间对象? – trans1st0r