python - 计算两行之间时间差的最佳方法

标签 python pandas time

场景

我有一个具有给定结构的数据框,最后总结一下,我想找出服务的响应和请求之间的时间差。 它有以下列:

  • 时间戳
  • 服务
  • 命令
  • 消息类型
  • 消息_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 创建 ResponseResponse 系列并减去 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/

相关文章:

python - 如何在 python 中使用 urllib2 加快获取页面的速度?

php - Codeigniter REST API 耗时

python - 如何使用 subprocess 来执行 Python 程序

python - 在要插入 mongodb 的字典列表中设置唯一字段

python - 在 Python Pandas Dataframe 中动态添加列的数据处理

python - 枚举一个值,直到达到 pandas 中的特定值

python - 提交表格并上传带有请求的文件

python - Python 路径在哪里被操作?

python - 删除 Pandas 系列中的空列表

c++ - 在 DATETIMEPICK_CLASS 元素中获取和设置日期