Python 假设结束时间低于第二天开始时间,则熊猫的差异为2倍

Python 假设结束时间低于第二天开始时间,则熊猫的差异为2倍,python,pandas,datetime,timedelta,Python,Pandas,Datetime,Timedelta,假设这是我的数据帧: date start_time end_time 1/1/2018 20:00 21:00 1/1/2018 23:00 1:00 我想添加另一列,名为duration,显然是end\u time-start\u time 我的问题是,如果我写了以下内容: pd.to_datetime(train_2.end_time,format='%H:%M:%S')-pd.to_timedelta(train_2.start_t

假设这是我的数据帧:

date        start_time end_time
1/1/2018     20:00       21:00
1/1/2018     23:00       1:00
我想添加另一列,名为
duration
,显然是
end\u time-start\u 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指的是第二天(2018年1月2日),所以我希望持续时间为2小时

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


任何帮助都将不胜感激

您可以尝试通过转换为日期戳进行减法,对于所有负值的例外情况,可以添加额外的天数

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