當我解決這個錯誤時,有一些函數可以解決這個問題,ufunc“subtract”不能使用類型為 dtype ('<M8 [ns]') 和 dtype ('float64') 的操作數,或者該程序工作的另一種方式并給出我以下數據:import pandas as pdmaint = pd.read_csv('D:/IC/teste_disseracao/banco_de_dados_PdM/PdM_maint.csv')telemetry = pd.read_csv('D:/IC/teste_disseracao/banco_de_dados_PdM/PdM_telemetry.csv')telemetry['datetime'] = pd.to_datetime(telemetry['datetime'], format="%Y-%m-%d %H:%M:%S")maint['datetime'] = pd.to_datetime(maint['datetime'], format="%Y-%m-%d %H:%M:%S")import numpy as np#transforma o erro em colunacomp_rep = pd.get_dummies(maint)comp_rep.columns = ['datetime', 'machineID', 'comp1', 'comp2', 'comp3', 'comp4']#combinar erros para uma determinada máquina em uma determinada hora?comp_rep = comp_rep.groupby(['machineID', 'datetime']).sum().reset_index()#adicione pontos de tempo onde nenhum componente foi substituído?comp_rep = telemetry[['datetime', 'machineID']].merge(comp_rep,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? on=['datetime', 'machineID'],? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? how='outer').fillna(0).sort_values(by=['machineID', 'datetime'])components = ['comp1', 'comp2', 'comp3', 'comp4']for comp in components:? ? #converte o indicador para a data mais recente de alteração do componente?? ? comp_rep.loc[comp_rep[comp] < 1, comp] = None? ? comp_rep.loc[-comp_rep[comp].isnull(), comp] = comp_rep.loc[-comp_rep[comp].isnull(), 'datetime']? ???#forward-fill a data mais recente de alteração de componente?? ? comp_rep[comp] = comp_rep[comp].fillna(method='ffill')? ??#remove as datas em 2014 (pode ter NaN ou datas de mudança de componente futura)??comp_rep = comp_rep.loc[comp_rep['datetime'] > pd.to_datetime('2015-01-01')]for comp in components:? ? comp_rep[comp] = (comp_rep['datetime'] - comp_rep[comp]) / np.timedelta64(1, 'D')? ??print(comp_rep.head())
1 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
試試這個,它對我有用:
for comp in components: comp_rep[comp] = (comp_rep["datetime"] - pd.to_datetime(comp_rep[comp])) / np.timedelta64(1, "D") comp_rep.head()
添加回答
舉報
0/150
提交
取消