【问题标题】:Python pandas Calculate difference between 2 timestamp columns in a dataframe excluding weekends in secondsPython pandas计算数据框中2个时间戳列之间的差异,不包括周末(以秒为单位)
【发布时间】:2020-05-03 22:29:54
【问题描述】:

我有 2 列带有时间戳,我需要它们之间的差异(以秒为单位)在第 3 列中,不包括周末。我应该如何在 Python/pandas 中做到这一点? 我希望它从时间线中排除周六/周日。 前任 - 1.从周四/周五开始,到周一/周二结束 - 仅计算从周四/周五到周一/周二之间的持续时间。 2.如果它从星期六开始并在星期一结束 - 仅计算星期一。 3.如果 ex.从星期五开始并在星期日结束,则仅计算星期五。 4.如果在周六和周日开始和结束 - 结果是 0 秒

【问题讨论】:

  • 看看这个链接有没有帮助stackoverflow.com/questions/54797891/…
  • 我检查了这个,但它以小时为单位计算,所以即使是 4 秒的差异在这里也被四舍五入为 1 小时。这也不包括假期。我只需要它来排除周末。

标签: python-3.x pandas python-2.7 timestamp timestampdiff


【解决方案1】:

首先,将两列中的时间戳转换为DateTime,如果不是,它已经是这种格式。

其次,查找当天是周末还是工作日,并使用total_seconds方法通过以下方式以秒为单位查找差异:

def find_diff_in_secs(row):
    day_of_week = row["start"].weekday()

    if day_of_week<5:
        #          Find the diff in secs
        diff_in_secs =(row["end"]-row["start"]).total_seconds()
        return diff_in_secs
    else:
        return "NA"

df.apply(find_diff_in_secs)

【讨论】:

  • 谢谢,但是如果开始是星期五/星期四,结束是星期一/星期二呢?我将需要它来计算仅工作秒数并排除周六和周日。此外,如果它从星期六开始并在星期一结束,我仍然需要它来计算星期一的秒数。如果它在星期五开始并在星期日结束。我只需要它来计算星期五
  • 工作日的开始时间和结束时间是什么时候?
  • 从周一 00:00:00 到周五 23:59:59 开始
猜你喜欢
  • 2019-10-09
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2012-07-22
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多