Python 减去两列datetime.time

Python 减去两列datetime.time,python,python-2.7,pandas,datetime,Python,Python 2.7,Pandas,Datetime,这应该很简单,但我被卡住了。任何帮助都将不胜感激。我正在使用python 2.7 我已将.xlsx导入数据帧 import pandas as pd # Open excel file as object all = pd.ExcelFile('trash prediction.xlsx') raw = all.parse('Sheet1', skiprows=0, na_values=['NA']) # Drop rows without time information raw = ra

这应该很简单,但我被卡住了。任何帮助都将不胜感激。我正在使用python 2.7

我已将.xlsx导入数据帧

import pandas as pd

# Open excel file as object
all = pd.ExcelFile('trash prediction.xlsx')
raw = all.parse('Sheet1', skiprows=0, na_values=['NA'])

# Drop rows without time information
raw = raw.drop(raw.index[0:27])

raw.columns = ['date', 'id', 'marketer_prediction', 
               'start', 'steps','truck_is','trash_prediction',
              'total', 'top','mid','bot','problems','finish']

raw.dtypes
输出是

    date                   datetime64[ns]
id                             object
marketer_prediction            object
start                          object
steps                         float64
truck_is                       object
trash_prediction               object
total                         float64
top                           float64
mid                           float64
bot                           float64
problems                       object
finish                         object
dtype: object
我想从raw.start中减去raw.finish,它们是excel工作表中的时间,但在dataframe中,它们都标记为对象

raw.finish-raw.start
给出错误:“TypeError:不支持的操作数类型-:'datetime.time'和'datetime.time'”

为什么dtype说raw.finish和raw.start是对象,而当我减去它们时,它们被标记为datetime.time?是否有其他方法显示列为datetime.time

这使用pd.to_datetime将列转换为datetime64[ns],但是当我尝试以下操作时

raw['start'] = pd.to_datetime(raw['start'])
我得到错误:“TypeError:datetime.time类型的对象没有len()


时间应该以什么格式减去它们,我如何将它们转换为该格式?

您确定“完成”和“开始”中的所有观测值都具有相同的类型吗?这也许可以解释为什么您得到列类型“object”,这是一个很好的观点。如何在单个列中检查类型?您可以执行以下操作以获取列中显示的所有不同类型:set(map(type,raw.finish.values.tolist()))太好了,这非常有用。输出是
{datetime.time,float}
-因此其中至少有一个有问题的float值。我怎样才能知道它是哪一个值呢?在你发现了混合类型之后,我想有必要重新表述这个问题,可能提供一个最小的可重复的例子。通过这种方式,有人可以给你一个正确的答案(或者你可以在处理可复制的示例时自己找到答案)