我的代码有问题,我需要根据一些属性找到某个值。
xls = xlrd.open_workbook(filed, on_demand=True)
for sheet_name in xls.sheet_names():
df = pd.read_excel(filed,sheet_name)
df['diffspeed']=df['speed'].diff().fillna(0)
df['timeshift'] = df['time'].shift(-1)
df['timediff']=(df['timeshift']-df['time'])
df['Distance']= df['diffspeed']/df['timediff']
df.to_excel(writer,sheet_name)
writer.save()
它一直给我以下错误 ufunc true_divide不能使用类型为dtype('float64')和dtype('
答案 0 :(得分:0)
列df['timediff']
的数据类型是Timedelta,从numpy dtype kind m
看。它旨在表示两个Datetime
对象之间的差异,并通过减去第df['timediff']=(df['timeshift']-df['time'])
行中的对象来确定。尽管普通float
没有单位,但您可以将Timedeltas视为拥有单位。它们不能用作除数,因为该单位的倒数没有以numpy / pandas表示。
您可以将它们转换为以秒为单位的普通浮点数,方法是
df['timediff'] / np.timedelta64(1, 's')
其中np
代表numpy
因此,最后一行显示为
df['Distance'] = df['diffspeed']/(df['timediff'] / np.timedelta64(1, 's'))
。
有关更多说明,请参见this answer too。