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

时间:2018-10-23 18:22:53

标签: python pandas python-datetime

<a>

我希望能够将上面的数据框转换为具有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方法的情况下将上述操作向量化。

3 个答案:

答案 0 :(得分:1)

尝试一下

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

答案 1 :(得分:1)

尝试:

df.assign(sdate_time=pd.to_datetime(df['et'], format='%H:%M:%S'), 
          edate_time=pd.to_datetime(df['st'], format='%H:%M:%S'))

输出:

         et        st          sdate_time          edate_time
0  22:00:00  21:00:00 1900-01-01 22:00:00 1900-01-01 21:00:00
1  03:00:00  01:00:00 1900-01-01 03:00:00 1900-01-01 01:00:00

答案 2 :(得分:0)

没有比分配随机日期更好的方法了吗?

我有matplotlib版本'3.3.1',但仍然面临无法绘制datetime.time对象的问题,该对象不需要日期,而只需要一天的24小时。

我已经看到使用import matplotlib.dates as mdates来解决标签的方法,但是仍然不是最好的方法。