这应该很简单,但我被卡住了。任何帮助将不胜感激。我正在使用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表中的时间,但是在数据框中,它们都被标记为对象。
raw.finish-raw.start
给出错误:" TypeError:不支持的操作数类型 - :' datetime.time'和' datetime.time'"
为什么dtype说raw.finish和raw.start是对象,而当我减去它们时,它们被标记为datetime.time?有没有其他方法可以显示列是datetime.time?
这个example使用pd.to_datetime将列转换为datetime64 [ns],但是当我尝试以下内容时
raw['start'] = pd.to_datetime(raw['start'])
我收到错误:" TypeError:类型' datetime.time'的对象没有len()"
减去它们的时间应该是什么格式,以及如何将它们转换为该格式?