如何计算 pandas 中事件之间的时间

2023-12-28

原始问题

我陷入了以下问题。我试图找出车辆在工厂存放的具体时间和时间。我有一个 Excel 工作表,其中存储了所有事件,这些事件要么是交付路线,要么是维护事件。最终目标是获得一个数据帧,其中给出了车辆登记号以及相应的到达工厂和在那里花费的时间(包括维护操作)。对于感兴趣的人来说,这是因为我最终希望能够安排对车辆的非关键维护操作。

我的数据框的一个例子是:

  Registration RoutID       Date Dep Loc Arr Loc Dep Time Arr Time  Days
0         XC66    A58  20/May/17    Home   Loc A    10:54    21:56     0
1         XC66    A59  21/May/17   Loc A    Home    00:12    10:36     0
2         XC66   A345  21/May/17   Home    Loc B    12:41    19:16     0
3         XC66   A346  21/May/17   Loc B   Loc C    20:50    03:49     1
4         XC66   A347  22/May/17   Loc C    Home    06:10    07:40     0
5         XC66    #M1  22/May/17    Home    Home    10:51    13:00     0

我创建了一个脚本,其中的日期和时间均经过处理,以便为到达和出发日期时间创建正确的日期时间列。对于维护期间:“Dep Loc”= Home 且“Arr Loc”= Home,以下代码用于选出相关行:

df_home = df[df["Dep Loc"].isin(["Home"])]
df_home = df_home[df_home["Arr Loc"].isin(["Home"])]

从这里我可以轻松减去日期来创建持续时间列。

到目前为止,一切都很好。然而,我在其他时间坚持使用计算。这是因为可能存在中间停止,因此 .shift() 函数不起作用,因为要移动的行数不是恒定的。

我试图搜索这个问题,但我只能找到班次解决方案,或者基于内部事件时间的答案,而不是基于事件之间的时间。

任何正确方向的指导将不胜感激!

Regards

解决方案的尝试

我已经被这个问题困扰了一段时间,但在发布这个问题后不久我尝试了这个解决方案:

for idx, loc in enumerate(df["Arr Loc"]):
    if loc == "Home":
        a = ((idx2, obj) for idx2, obj in enumerate(df["Dep Loc"]) if (obj == "Home" and idx2 > idx))
        idx_next = next(a)
        idx_next = idx_next[0]

        Arrival_times = df["Arr Time"]
        Departure_times = df["Dep Time"]

        Duration = Arrival_times[idx] - Departure_times[idx_next]

在这里,我使用 next 函数来查找下一次出现的 Home 作为起始位置(即车辆离开基地的时间)。随后,我将两个日期相减以找到正确的时差。

它适用于小数据集,但仍不适用于整个数据集。


过滤相关数据行后,根据“日期”和“天数”列将“到达时间”和“出发时间”转换为时间戳

df_home = df[df["Dep Loc"].isin(["Home"])]
df_home = df_home[df_home["Arr Loc"].isin(["Home"])]

df_home['Dep Time']=df_home['Date']+' '+df_home['Dep Time'] 

df_home['Arr Time']=df_home['Date']+' '+df_home['Arr Time'] 

df_home['Date']=pd.to_datetime(df_home['Date'])

df_home['Dep Time']=pd.to_datetime(df_home['Dep Time'])
df_home['Arr Time']=pd.to_datetime(df_home['Arr Time'])
df_home['Dep Time']=pd.to_datetime(df_home['Dep Time'])+pd.to_timedelta(df_home['Days'], unit='d')

最后,“出发时间”和“到达时间”之间的差异将给出持续时间(以分钟为单位)

df_home['diff_duration']=(df_home['Dep Time']-df_home['Arr Time']).astype('timedelta64[m]')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 pandas 中事件之间的时间 的相关文章

随机推荐

  • Gmail如何在页面之间保留复选框选择

    在 gmail 中 如果您选中标记电子邮件 4 然后移动到不同的 50 或 25 条记录集并标记选择 26 那么如果您来回移动 4 和 26 都会保留 谷歌是如何做到这一点的 是否可以在仅包含 50 条记录的页面中执行类似的操作 并且当单击
  • 如何在 Jenkins 中配置 Selenium HTML 报告

    我们在 Jenkins 中配置了 Java MOJO 一旦在 CI 中构建代码 就会生成可靠的报告 我们有 Junit 和 Selenium 测试用例来测试应用程序 我需要以 HTML 格式呈现来自测试用例的结果 Jenkins 有没有可用
  • Laravel 5 在两列上有很多关系

    两列上是否可以有 hasMany 关系 我的表有两列 user id and related user id 我希望我的关系与任一列相匹配 在我的模型中我有 public function userRelations return this
  • 自定义函数中的序列对象

    我试图有条件地 通过参数 从 4 个序列中获取下一个值 在自定义标量值函数中 我尝试使用 序列的下一个值 序列定义为 CREATE SEQUENCE dbo sequence1 AS int START WITH 1 INCREMENT B
  • Pandas - 在索引中使用 merge_asof 函数

    代码是 import numpy as np import pandas as pd dateparse lambda x pd datetime strptime x d m Y H M vento pd read csv dados t
  • BigDecimal/双精度 - 数字向上舍入更高

    下面的第二个方法调用 setYCooperative 得到错误的值 89 99999435599995 而不是 89 99999435599994 第一次调用 setXCooperative 获得正确的值 29 99993874900002
  • JavaScript 有没有办法定期调用函数?

    JavaScript 有没有办法定期调用函数 The setInterval 方法 重复调用函数或执行代码片段 每次调用之间有固定的时间延迟 它返回一个唯一标识该间隔的间隔 ID 因此您可以稍后通过调用clearInterval 将其删除
  • Android - 将多种字体样式组合成一种字体(Typeface)

    我有几种不同风格的字体 可以说 MyFont default otf MyFont italic otf MyFont bold otf 通常 我会像这样设置 TextView 的字体 Typeface tf Typeface create
  • R 按选定行号动态分割数据帧/子集 - 解析文本网格 praat

    我正在尝试处理一个名为的 分段文件 TextGrid 由 Praat 程序生成 原始格式如下所示 File type ooTextFile Object class TextGrid xmin 0 xmax 243 761375 tiers
  • Django - 迁移外键字段类型与当前类型不匹配

    我正在使用 MSSQL 数据库 并且在 Django 进入演出之前我已经创建了一些表 因此检查数据库我得到了模型managed False元选项 然后我创建了其他与 Django 迁移相关的内容 这些模型是这样的 class ModelAl
  • Windows UAC 对话框

    我有一个没有资源的应用程序 根本没有资源 所以也没有 UAC 清单 该应用程序使用 CopyFile 将自身安装到 appdata roaming 文件夹中 它还设置自动启动 以便每次启动时自动启动 现在 每次启动电脑时 都会弹出 UAC
  • is_assignable<> 的结果不一致[重复]

    这个问题在这里已经有答案了 可能的重复 is convertible is assignable 和 有什么区别 https stackoverflow com questions 13952404 what is the differen
  • Rails 3 邮件发送问题

    我正在使用 Rails 3 并实现电子邮件发送功能 我不确定我的配置是否正确 但这是我的代码 邮件程序 user mailer rb class UserMailer lt ActionMailer Base default from gt
  • 组件测试中的角度单击选择选项

    我已尝试以下操作来尝试单击选择下拉列表中的选项 但没有任何效果 selectEl fixture debugElement query By css dropdown selectEl nativeElement options 3 nat
  • 如何使用博主视频作为 iframe(错误 400)

    我有一个网站 我使用博客中托管的视频作为 iframe 代码如下所示 多年来它运行得很好 但目前它显示一条错误消息 Bad Request Error 400 但现在博主需要令牌才能观看博主上托管的视频 链接现在如下所示 https www
  • 如何使用执行选择器在特定时间段后将函数与参数联系起来

    我是这个 iPhone 应用程序编程的新手 我有一个函数 其参数类型作为结构指针 如下所示 void responce structurePtr someData 我想使用调用这个函数performselector method5秒的时间间
  • ES6 模块如何作为 Node 中的脚本运行?

    ES6 模块如何作为 Node 中的脚本运行 当我尝试这个 shebang 时 我收到一个错误 usr bin env node experimental modules usr bin env node experimental modu
  • 暂停线程的执行而不休眠?

    我正在使用 Skype API 它每次收到一条消息都会发回一条消息 我不确定这是否真的is是什么原因造成的 但这是我能得到的最接近的结果 当我发送太多消息时 COM 控件无法处理所有回复 这会导致整个应用程序崩溃 当我使用时会发生这种情况f
  • 为什么 Silverlight 不处理我的自定义浮点属性的转换

    在 Silverlight 4 项目中 我有一个扩展 Canvas 的类 public class AppendageCanvas Canvas public float Friction get set public float Rest
  • 如何计算 pandas 中事件之间的时间

    原始问题 我陷入了以下问题 我试图找出车辆在工厂存放的具体时间和时间 我有一个 Excel 工作表 其中存储了所有事件 这些事件要么是交付路线 要么是维护事件 最终目标是获得一个数据帧 其中给出了车辆登记号以及相应的到达工厂和在那里花费的时