我有一个包含三个输入的数据集。
X1, X2和X3是我的输入。我试图用之前的输入预测X1的下一个值。
当我预测X1的下一个值时,一些之前的X1输入值会缺失。然后预测值会移动到那个缺失的值,并作为下一个预测值的输入。
time X1 X2 X3 predicted value of X1 (next) 0 10 20 30 50 60min 50 40 20 120120min 120 20 80 240180min NaN 10 20 280
在这里,180分钟时我的X1输入值是缺失的。所以我想用之前的预测值240
替换NaN
time X1 X2 X3 predicted value180 min ** 240 ** 10 20 280
我写了代码,但对我不起作用。谁能帮我解决这个问题?
pred=[]for index, row in data.iterrows():val = row['X1']if np.isnan(val): f = row['X1','X2','X3'] val = model.predict(f) pred.append(val)
回答:
如果我理解正确的话,在你代码的末尾再加一行:
data.loc[index, 'X1'] = val
所以你的代码将是:
pred=[] for index, row in data.iterrows(): val = row['X1'] if np.isnan(val): data.iloc[index]['X1'] = pred[-1] row['X1'] = pred[-1] f = row['X1','X2','X3'] val = model.predict(f) pred.append(val)
希望这有帮助