首页 > 解决方案 > 如何将混合时间和日期时间值的列转换为日期时间(或时间)?

问题描述

这是列

Time            CloseTime
17  09:30:00  2019-04-22 09:32:00
27  09:30:00  2019-05-13 09:32:00
36  09:30:00             15:15:00
37  09:30:00             15:15:00
44  09:30:00  2019-05-24 09:32:00
76  09:30:00  2019-06-07 09:32:00
92  09:30:00  2019-06-17 09:32:00

目前dtype,两列的O.

我想将两列都转换为,time以便可以比较(减去)它们。

我努力了:

df['CloseTime'] = pd.to_datetime(df['CloseTime'])

标签: pythonpandasdatetime

解决方案


map+to_timedelta

对此有一点乐趣。

x = pd.to_datetime(df['CloseTime']).dt.time.astype(str)
y = df['Time'].astype(str)
# convert `x` and `y` to `timedelta`, then subtract
df['diff'] = pd.Series.sub(*map(pd.to_timedelta, (x, y)))
df

        Time            CloseTime     diff
17  09:30:00  2019-04-22 09:32:00 00:02:00
27  09:30:00  2019-05-13 09:32:00 00:02:00
36  09:30:00             15:15:00 05:45:00
37  09:30:00             15:15:00 05:45:00
44  09:30:00  2019-05-24 09:32:00 00:02:00
76  09:30:00  2019-06-07 09:32:00 00:02:00
92  09:30:00  2019-06-17 09:32:00 00:02:00

推荐阅读