import pandas as pd
import datetime
df = pd.DataFrame([{'st':datetime.datetime.strptime('21:00:00','%H:%M:%S').time(),'et':datetime.datetime.strptime('22:00:00','%H:%M:%S').time()}, {'st':datetime.datetime.strptime('1:00:00','%H:%M:%S').time(),'et':datetime.datetime.strptime('3:00:00','%H:%M:%S').time()}])
Out[183]: df
et st
0 22:00:00 21:00:00
1 03:00:00 01:00:00
我希望能够将上述数据框转换为具有
datetime.datetime
对象的新字段,同时还有两个额外的列,这些列中包含任何虚拟日期,并使用它们各自行中的时间: et st sdate_time edate_time
0 22:00:00 21:00:00 2018-01-01 21:00:00 2018-01-01 22:00:00
1 03:00:00 01:00:00 2018-01-01 1:00:00 2018-01-01 3:00:00
我尝试的方法是使用apply方法。
df['et'].apply(lambda et: pd.datetime.combine(datetime.datetime.strptime('2018-01-01', '%Y-%m-%d').date(),et))
但事实证明,数据框可能非常巨大,我希望在不使用apply方法的情况下向量化上述操作。
df.apply(pd.to_datetime, format='%H:%M:%S')
对你有效吗?日期为1900-01-01。 - Scott Boston