python - 操作值与 HH :MM:SS format - python 不匹配

标签 python pandas datetime

我有一个如下所示的数据框:

    arrival     departure
0   23:55:00    23:57:00
1   23:57:00    23:59:00
2   23:59:00    24:01:00
3   24:01:00    24:03:00
4   24:03:00    24:05:00

我正在处理涵盖一整天和一天后部分时间的数据。数据(大多数时候)采用 HH:MM:SS 格式。但是,某些时间值高于 23:59:59,最高可达 27:00:00。

我想获取出发到达列之间的时间差。

我尝试使用datetime来做到这一点,但我猜出了问题:

FMT = '%H:%M:%S'

delta = datetime.strptime(df['departure'], FMT) - datetime.strptime(df['arrival'], FMT)

这会引发以下错误:

ValueError: time data '24:01:00' does not match format '%H:%M:%S'

有没有办法获得这两列之间的时间差,即使它们的格式并不总是与 HH:MM:SS 格式匹配?

最佳答案

您可以使用 datetime 中的 timedelta

import datetime

delta1 = datetime.timedelta(hours=23, minutes=59, seconds=0)
delta2 = datetime.timedelta(hours=24, minutes=01, seconds=0)
timedelta = delta2 - delta1
>>> timedelta # or timedelta.to_seconds()
datetime.timedelta(seconds=120)

以秒为单位给出增量。完整示例:

import datetime

arrival = "24:01:00"
departure = "24:03:00"


def get_time_from_string(t):
    return dict(
        zip(["hours", "minutes", "seconds"], list(map(lambda x: int(x), t.split(":"))),)
    )


delta1 = datetime.timedelta(**get_time_from_string(arrival))
delta2 = datetime.timedelta(**get_time_from_string(departure))

delta = delta2 - delta1
print(delta.total_seconds())

关于python - 操作值与 HH :MM:SS format - python 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229650/

相关文章:

python - 如何获取与当前时区对应的 tz_info 对象?

mysql select between two dates 有奇怪的行为

python - AttributeError: 'TimedeltaProperties' 对象没有属性 'minute'

python - 根据另一列中的值删除一列的重复项,Python,Pandas

iPhone 和 JSON : Encode dates in JSON objects for use in iPhone applications

python - 如何根据特定列的值重新排列数据框的行

python - 计算 id 上相邻两天的列的绝对差之和

python - 需要建议使用 python 脚本从 ssh 服务器获取 git 克隆工作

python flask ImmutableMultiDict

python - 如何使用 python 中的 group() 方法进行列表理解?