gpt4 book ai didi

python - 假设如果 end_time 低于 start_time,则 pandas 会得到 2 倍的差异,则为第二天

转载 作者:行者123 更新时间:2023-12-01 08:51:32 24 4
gpt4 key购买 nike

假设这是我的数据框:

date        start_time end_time
1/1/2018 20:00 21:00
1/1/2018 23:00 1:00

我想添加另一列,名为duration,这显然是end_time - start_time

我的问题是,如果我写这样的东西:

pd.to_datetime(train_2.end_time,format='%H:%M:%S')-pd.to_timedelta(train_2.start_time))

它认为第二行是负数(如 23:00>1:00),而它实际上是正数,因为 1:00 指的是第二天(1/2/2018),所以我希望持续时间为2小时。

怎样才能达到这样的结果呢?

任何帮助将不胜感激!

最佳答案

您可以尝试通过转换为日期戳来进行减法,并且对于负值的所有异常(exception)情况添加额外的天数

df['duration'] = pd.to_datetime(df.end_time) -  pd.to_datetime(df.start_time)
df.loc[df.duration.dt.total_seconds() <0,'duration'] += pd.Timedelta(1,'D')

输出:

date    start_time  end_time    duration
0 1/1/2018 20:00 21:00 01:00:00
1 1/1/2018 23:00 1:00 02:00:00

关于python - 假设如果 end_time 低于 start_time,则 pandas 会得到 2 倍的差异,则为第二天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com