ufunc true_divide不能使用dtype(“float64”)和dtype(“<m8[ns]”)类型的操作数

2024-10-03 04:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码有问题,我需要根据某些属性找到某个值。在

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(' 在


Tags: 代码namedf属性timexlsexcelsheet
1条回答
网友
1楼 · 发布于 2024-10-03 04:36:09

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。在

相关问题 更多 >