如何将 datetime.time() 对象转换为 datetime.datetime 对象 pandas

Suj*_*ash 8 python python-datetime pandas

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
Run Code Online (Sandbox Code Playgroud)

我希望能够使用新字段转换上述数据帧,该新字段具有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
Run Code Online (Sandbox Code Playgroud)

我尝试过的方法是使用 apply 方法

df['et'].apply(lambda et: pd.datetime.combine(datetime.datetime.strptime('2018-01-01', '%Y-%m-%d').date(),et))
Run Code Online (Sandbox Code Playgroud)

但事实证明数据帧可能非常巨大,我想在不使用 apply 方法的情况下对上述操作进行矢量化。

Res*_*per 4

尝试这个

date = str(datetime.datetime.strptime('2018-01-01', '%Y-%m-%d').date())

df['edate_time'] = pd.to_datetime(date + " " + df.et.astype(str))

       et          st            edate_time
0   22:00:00    21:00:00    2018-01-01 22:00:00
1   03:00:00    01:00:00    2018-01-01 03:00:00
Run Code Online (Sandbox Code Playgroud)