如何用timedelta(python)减去两个时间列?

时间:2016-12-12 18:46:25

标签: python pandas python-datetime

我试着在这两个时间列之间做几个小时的减法,所以我可以看到其他动作发生了多长时间:

In[1]:aumento_data_separada 
Out[1]: Response_Time      Request_Time(when the client do a request)   
 0   00:56:58.612000    00:46:34.347000
 1   12:00:41.069000    12:00:32.603000
 2   18:05:02.776000    16:39:42.682000
 3   19:27:11.997000    17:33:05.589000 
...

此数据框包含更多如上所述的392560行。我想在所有这些操作中进行操作。并使用结果创建一个新列。 我尝试从timedelta阅读文档,但我根本不理解它。 我这样做了 - > type(aumento_data_separada['Response_Time'].iloc[0])type(aumento_data_separada['Request_Time'].iloc[0])查看了该类型,并向我返回了datetime.time。我发现由于类型的原因,我无法在其中进行操作。所以我尝试单独转换它们:pd.to_datetime(aumento_data_separada['Request_Time'])但它返回以下错误 - > object of type 'datetime.time' has no len()

这是第一条错误消息和我尝试的代码 - > aumento_data_separada.Response_Time - aumento_data_separada.Request_Time - 返回unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

2 个答案:

答案 0 :(得分:1)

使用pd.Timedelta

将列转换为pd.to_timedelta
df = df.apply(pd.to_timedelta)

df.Response_Time - df.Request_Time

0   00:10:24.265000
1   00:00:08.466000
2   01:25:20.094000
3   01:54:06.408000
dtype: timedelta64[ns]

答案 1 :(得分:1)

这类似于piRSquared的答案,但由于某种原因,当我并排测试这两种方法时,这会更快。不知道为什么会这样。

df['Time_Diff'] = pd.to_datetime(df.Response_Time) - pd.to_datetime(df.Request_Time)