【问题标题】:Calculating Start Time in Pandas from End Time and Run Time从结束时间和运行时间计算 Pandas 的开始时间
【发布时间】:2021-04-10 12:31:12
【问题描述】:

我刚刚开始了我的第一次实习,并且已经接到了一项给我带来麻烦的任务。我有一个带有“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 添加为数据框中的新列。

提前感谢您的任何指导。

【问题讨论】:

    标签: pandas datetime time


    【解决方案1】:

    使用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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多