我试着在这两个时间列之间做几个小时的减法,所以我可以看到其他动作发生了多长时间:
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'
答案 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)