假设第二天的end_time低于start_time,则熊猫获得2倍的差异

Binyamin Even

假设这是我的数据框:

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

我想添加另一列,命名durationend_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小时。

如何获得这样的结果?

任何帮助将不胜感激!

娜迦基兰

您可以尝试通过转换为datestamp进行减法,并且对于所有负值的例外情况,请增加额外的持续时间

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章