首页 > 解决方案 > 从结束时间和运行时间计算 Pandas 的开始时间

问题描述

我刚刚开始我的第一次实习,并且已经被分配了一个给我带来麻烦的任务。我有一个带有“complete_time”和“cycle_time”列的数据框,其中循环列是 %H:%M:%S.%f 中的运行时间。

我需要通过从结束时间中减去运行时间来计算带日期的开始时间。我曾尝试使用 datetime 库,但事实证明这是不成功的,因为它希望两列都采用 datetime 格式,但运行时间没有日期,也不应该有日期。

循环列是从最初看起来像 25.2(以秒为单位)的十进制字符串转换的,使用:

df['cycle_time'] = df['Cycle Time'].astype('float64')

df['cycle_time'] = pd.to_datetime(df['cycle_time'],unit='s')

df['cycle_time'] = pd.Series([val.time() for val in df['cycle_time']])

这是数据框:

    complete_time           cycle_time
0   2018-05-07 17:12:34.220 00:00:25.200000
1   2018-05-07 17:12:37.807 00:00:00
2   2018-05-07 17:12:43.453 00:00:25.200000
3   2018-05-07 17:12:51.193 00:00:25.100000
4   2018-05-07 17:12:52.223 00:00:25.300000
5   2018-05-07 17:12:54.297 00:00:00
6   2018-05-07 17:12:59.430 00:00:25.200000
7   2018-05-07 17:13:03.047 00:00:00
8   2018-05-07 17:13:08.697 00:00:25.200000
9   2018-05-07 17:13:16.417 00:00:25.200000

我想将 start_time 添加为数据框中的新列。

提前感谢任何方向。

标签: pandasdatetimetime

解决方案


使用pd.to_timedelta()代替pd.to_datetime

df['cycle_time'] = pd.to_timedelta(df['Cycle Time'].astype(float), unit='s')

df['start_time'] = df['complete_time'] - df['cycle_time']

推荐阅读