'numpy.ndarray'对象没有属性'drop'

时间:2019-08-02 06:07:04

标签: python pandas numpy machine-learning lstm

我有一个数据集,其中包含四个名为X1,X2,X3,X4的输入。 在这里,我创建了lstm模型,以使用四个输入的先前值来预测下一个X1值。

在这里我将时间更改为分钟,然后将时间设置为索引。

然后我创建了x_train,x_test,y_test和y_train。然后,我想花时间在x_train和x_test中。

我使用了代码:

data= pd.DataFrame(data,columns=['X1','X2','X3','X4'])
pd.options.display.float_format = '{:,.0f}'.format
print(data)

数据:

enter image description here

y=data['X1'].astype(int)
cols=['X1', 'X2', 'X3','X4']
x=data[cols].astype(int)

data=data.values
scaler_x = preprocessing.MinMaxScaler(feature_range =(0, 1))
x = np.array(x).reshape ((len(x),4 ))
x = scaler_x.fit_transform(x)
scaler_y = preprocessing.MinMaxScaler(feature_range =(0, 1))
y = np.array(y).reshape ((len(y), 1))
y = scaler_y.fit_transform(y)

train_end = 80
x_train=x[0: train_end ,]
x_test=x[train_end +1: ,]
y_train=y[0: train_end]
y_test=y[train_end +1:] 
x_train=x_train.reshape(x_train.shape +(1,))
x_test=x_test.reshape(x_test.shape + (1,))

x_train = x_train.drop('time', axis=1)
x_test = x_test.drop('time', axis=1)

然后出现错误:'numpy.ndarray' object has no attribute 'drop'

有人可以帮助我解决此错误吗?

2 个答案:

答案 0 :(得分:1)

由于提取了Pandas数据框的值,因此数据已转换为NumPy数组,因此已删除了列名。时间列是数据的第一列,因此您真正需要做的就是对它进行索引,以便提取第二列并继续:

x_time_train = x_train[:, 0]
x_train = x_train[:, 1:]
x_time_test = x_test[:, 0]
x_test = x_test[:, 1:]

请注意,我已经按照需要将训练和测试数据集的时间值分开绘制了。

答案 1 :(得分:0)

X_train是一个数组而不是数据框 您需要知道要删除的列的位置

  np.delete(X_train, [index_to_drop], 1)