Python 如何计算熊猫之间的时间差

Python 如何计算熊猫之间的时间差,python,pandas,Python,Pandas,我在熊猫中有以下数据帧 code srt_date srt_time end_time fina_datetime 123 2019-01-01 23:23:00 00:12:00 2019-01-02 00:13:00 123 2019-01-02 00:13:00 00:14:00 2019-01-02 00:15:00 123 2019-01-02 23:00

我在熊猫中有以下数据帧

 code     srt_date       srt_time      end_time    fina_datetime
 123      2019-01-01     23:23:00      00:12:00    2019-01-02 00:13:00 
 123      2019-01-02     00:13:00      00:14:00    2019-01-02 00:15:00
 123      2019-01-02     23:00:00      00:15:00    2019-01-03 00:16:00  
 df['end_time'] = df['srt_date'].map(str) +" "+ df['end_time'].map(str)
 df['end_time'] = pd.to_datetime(df['end_time'], format = "%Y-%m-%d %H:%M:%S")
 df['latency_in_secs'] = [x-y for x, y in zip(df['final_datetime'] , df['end_time'])]
 df['latency_in_secs'] = df.latency_in_secs.dt.total_seconds()
我想计算
fina\u datetime
-
end\u time
,我正在做下面的事情

 code     srt_date       srt_time      end_time    fina_datetime
 123      2019-01-01     23:23:00      00:12:00    2019-01-02 00:13:00 
 123      2019-01-02     00:13:00      00:14:00    2019-01-02 00:15:00
 123      2019-01-02     23:00:00      00:15:00    2019-01-03 00:16:00  
 df['end_time'] = df['srt_date'].map(str) +" "+ df['end_time'].map(str)
 df['end_time'] = pd.to_datetime(df['end_time'], format = "%Y-%m-%d %H:%M:%S")
 df['latency_in_secs'] = [x-y for x, y in zip(df['final_datetime'] , df['end_time'])]
 df['latency_in_secs'] = df.latency_in_secs.dt.total_seconds()
当日期进入下一个日期时,如第1行和第3行,上述代码存在问题。我如何在熊猫身上做到这一点

我想要的数据帧是

 code     srt_date       srt_time      end_time    fina_datetime        latency_in_secs 
 123      2019-01-01     23:23:00      00:12:00    2019-01-02 00:13:00     60 
 123      2019-01-02     00:13:00      00:14:00    2019-01-02 00:15:00     60
 123      2019-01-02     23:00:00      00.15:00    2019-01-03 00:16:00     60

IIUC,您可以屏蔽
结束时间
的位置,并按1添加日期:

# convert to timedelta
df['srt_time'] = pd.to_timedelta(df['srt_time'])
df['end_time'] = pd.to_timedelta(df['end_time'])

# convert to datetime
df['srt_date'] = pd.to_datetime(df['srt_date'])
df['fina_datetime'] = pd.to_datetime(df['fina_datetime'])

# the normal end
end_dates = df['srt_date'] + df['end_time']

# increase the end time with end_time < srt_time by one day
end_dates.loc[df['end_time'].le(df['srt_time'])] += pd.to_timedelta(1, unit='D')

# substract:
df['latency_in_secs'] = (df['fina_datetime'].sub(end_dates)
                             .dt.total_seconds()
                        )

您正在计算df['end_time']
,但不使用它来计算延迟。您正在使用
iss\u数据['end\u time']
iss_数据
是什么样子的?这是一个打字错误,对它进行了更改。另外,在第三行中,
end_时间
的格式不同。没有分号,而是在小时和分钟之间有一个句点-
00.15:00
。这又是一个打字错误。您能用当前代码得到的这些行的输出/错误更新您的帖子吗?