场景
我有一个具有给定结构的数据框,最后总结一下,我想找出服务的响应和请求之间的时间差。 它有以下列:
- 时间戳
- 服务
- 命令
- 消息类型
- 消息_ID
数据的一个例子是:
Timestamp Service Command Message_Type Message_ID
12:00:00 FoodOrders SeeStock() Request 125
12:00:02 FoodOrders SeeStock() Response 125
输出应该是这样的
Service Command Message_ID TimeDiff
FoodOrders SeeStock 125 00:00:02
我想到了什么
按 Service、Command、Message_ID 分组,并添加一个带有计算时间差的函数的附加列。
我的实际问题
- 我最初的计划好吗?我希望尝试使代码尽可能干净和快速
谢谢。
最佳答案
如果性能很重要,请避免聚合和 groupby,因为速度慢,更好的方法是使用 MultiIndex 创建 Response
和 Response
系列并减去 Timestamp
, sort_index
也应该有助于提高性能:
#if necessary
#df['Timestamp'] = pd.to_timedelta(df['Timestamp'])
cols = ['Service','Command','Message_ID']
s1 = df[df['Message_Type'] == 'Response'].set_index(cols)['Timestamp'].sort_index()
s2 = df[df['Message_Type'] == 'Request'].set_index(cols)['Timestamp'].sort_index()
df1 = s1.sub(s2).reset_index()
print (df1)
Service Command Message_ID Timestamp
0 FoodOrders SeeStock() 125 00:00:02
关于python - 计算两行之间时间差的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56473530/