将字符串转换为时间(H:M:S),这样我就可以减去它们

时间:2019-01-09 20:45:11

标签: python pandas datetime

我有一些数据是从XLS文件导入的,该文件有2列,其中包含字符串格式的时间信息。例如:04:15:45(表示4小时15分45秒)。

接下来我将其转换为datatime

df['column'] = pd.to_datetime(df['column'], errors='coerce')

我得到了类似2019-01-09 04:15:45的东西,这并不是我想要的,但这没关系(我宁愿使用%H%M%S格式)。我对具有相同特征的另一列做同样的事情。 接下来,我将创建一个新列,它们之间的区别是:

df['new column'] =  df['column1'] - df['column2']

但是,当我尝试将两者相减时,会得到如下结果:-1 days +23:00:00当我真正想要的只是诸如00:16:12之类的东西时,只包含%H%M%S的差异。

从算法上讲,所需的结果将类似于:

(time planned) - (time it actually took) = (difference format 00:18:12)

1 个答案:

答案 0 :(得分:2)

您可以将输出转换为以秒为单位的差异。

df = pd.DataFrame({'t1': ['1:13:14', '2:34:56', '2:44:32'], 't2': ['1:15:00', '2:37:00', '3:00:00']})
df.t1 = pd.to_timedelta(df.t1)
df.t2 = pd.to_timedelta(df.t2)
df
        t1       t2
0  1:13:14  1:15:00
1  2:34:56  2:37:00
2  2:44:32  3:00:00

df['t_diff'] = (df.t1 - df.t2).dt.total_seconds()

        t1       t2  t_diff
0 01:13:14 01:15:00  -106.0
1 02:34:56 02:37:00  -124.0
2 02:44:32 03:00:00  -928.0