Python 3.x 在数据帧中减去两个时钟时间

Python 3.x 在数据帧中减去两个时钟时间,python-3.x,pandas,Python 3.x,Pandas,我试图减去熊猫数据帧的两列,这两列包含正常的时钟时间作为字符串,但不知怎的,我被击中了 我尝试使用pandas.datetime将每列转换为datetime,但减法仍然不起作用 import pandas as pd df = pd.DataFrame() df['A'] = ["12:30","5:30"] df['B'] = ["19:30","9:30"] df['A'] = pd.to_datetime(df['A']).dt.time df['B'] = pd.to_datetime

我试图减去熊猫数据帧的两列,这两列包含正常的时钟时间作为字符串,但不知怎的,我被击中了

我尝试使用pandas.datetime将每列转换为datetime,但减法仍然不起作用

import pandas as pd
df = pd.DataFrame()
df['A'] = ["12:30","5:30"]
df['B'] = ["19:30","9:30"]

df['A'] = pd.to_datetime(df['A']).dt.time
df['B'] = pd.to_datetime(df['B']).dt.time

df['time_diff'] = df['B'] - df['A']

I am expecting the actual time difference between two clock times.

您应该使用
来_timedelta

df['A'] = pd.to_timedelta(df['A']+':00')
df['B'] = pd.to_timedelta(df['B']+':00')
df['time_diff'] = df['B'] - df['A']
df
Out[21]: 
         A        B time_diff
0 12:30:00 19:30:00  07:00:00
1 05:30:00 09:30:00  04:00:00

我尝试了以下方法。这对我也很有用。除以3600以小时为单位计算时间

 df = pd.DataFrame()
 df['A'] = ["12:30","5:30"]
 df['B'] = ["19:30","9:30"]
 df['time_diff_minutes'] = (pd.to_datetime(df['B']) - 
 pd.to_datetime(df['A'])).astype('timedelta64[s]')/60
 df['time_diff_hours'] = df['time_diff_minutes']/60
 df

Out[161]: 
       A      B  time_diff_minutes  time_diff_hours
0  12:30  19:30              420.0              7.0
1   5:30   9:30              240.0              4.0