我的代码有问题,我需要根据某些属性找到某个值。在
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(' 在
列
df['timediff']
的数据类型是Timedelta,可以从numpy dtype kindm
看到。它表示两个Datetime
对象之间的差异,并通过减去df['timediff']=(df['timeshift']-df['time'])
行的对象来建立。正常的float
没有单位,你可以把时间增量看作是有单位的。它们不能用作除数,因为这个单位的倒数在numpy/pandas中没有表示。在你可以把它们转换成普通的浮点数
df['timediff'] / np.timedelta64(1, 's')
其中np
代表numpy
因此最后一行是df['Distance'] = df['diffspeed']/(df['timediff'] / np.timedelta64(1, 's'))
。在有关详细说明,请参见this answer too。在
相关问题 更多 >
编程相关推荐