【问题标题】:Calculate sum of overlapping timestamp differences and duplicate time计算重叠时间戳差异和重复时间的总和
【发布时间】:2017-12-20 12:30:58
【问题描述】:

我有一个包含两列的数据框,其中包含会话的开始和结束时间戳:

1 2017-12-04 05:26:15   2017-12-04 05:28:39
2 2017-12-04 05:26:31   2017-12-04 05:34:36
3 2017-12-04 05:28:44   2017-12-04 05:28:54
4 2017-12-04 05:29:05   2017-12-04 05:30:57
5 2017-12-04 05:31:04   2017-12-04 05:31:13
6 2017-12-04 05:31:06   2017-12-04 05:31:13
7 2017-12-04 05:31:26   2017-12-04 05:43:18
8 2017-12-04 05:33:31   2017-12-04 05:35:54
9 2017-12-04 05:34:12   2017-12-04 05:35:24

我需要计算这些会话的差异总和(即持续时间),不包括重复时间和重复时间 例如:考虑会话 7、8、9。从 05:31:26(第 7 场)开始,到 05:43:18(第 7 场)结束。但在这之间有多个会话打开。

7,8,9 的结果将是: 持续时间不包括重复时间:11 分 52 秒 重复时间:2 分 23 秒(第 8 节)+ 1 分 12 秒(第 9 节)= 3 分 35 秒

如何在python中实现这一点?

【问题讨论】:

  • 所以你的努力?我们可以看看吗
  • 它有点宽泛且难以理解,为了让答案更容易理解问题,最好以给定数据的形式提供预期的输出。
  • 这甚至有一个独特的解决方案吗?这似乎是一个未充分说明的问题,而且很难理解……如果两个区间重叠,您如何确定哪个区间是重复的,哪个是原始的?似乎您可能想探索转换为 pandas 间隔对象,如果有帮助的话

标签: python pandas timestamp


【解决方案1】:

您好,抱歉解释不好。同时想出了解决方案 - 不确定它是否是最有效的解决方案,但它确实有效。

for i in range(0,len(inter_data)):
### PLEASE INDENT HERE WHEN USING THE CODE ###

if i == 0:
    begin_first = inter_data.iloc[i]['begin_timestamp']
    end_first = inter_data.iloc[i]['end_timestamp']
    dupl = 0
    dur = (end_first-begin_first).seconds
else:
    begin = inter_data.iloc[i]['begin_timestamp']    
    end = inter_data.iloc[i]['end_timestamp']

    if begin >= end_first:
        dur = dur + (end-begin).seconds
        end_first = end
    elif (begin < end_first) and (end >= end_first) :
        dur = dur + (end-end_first).seconds
        dupl = dupl + (end_first-begin).seconds
        end_first = end
    elif (begin <= end_first) and (end < end_first):
        dupl = dupl + (end-begin).seconds

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2019-11-01
    相关资源
    最近更新 更多