矢量和DataFrame长度

时间:2017-06-03 23:04:36

标签: python-3.x pandas numpy dataframe scikit-learn

我有一个由12列组成的数据框。然后我从中剪切了一个矢量并将其分开。然后我从sklearn库执行train_test_split,如下所示:

X=pd.DataFrame()

X['annua_inc']=annual_inc
X['delinq_2yrs']=delinq_2yrs
X['dti']=dti
X['emp_length']=emp_length 
X['loan_amnt']=loan_amnt
X['installment']=installment
X['int_rate']=int_rate
X['total_acc']=total_acc
X['open_acc']=open_acc 
X['pub_rec']=pub_rec
X['acc_now_delinq']=acc_now_delinq
X['loan_stat']=loan_stat

X=X.fillna(0)
y=X['loan_stat']
X=X.drop(['loan_stat'], axis=1)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, 
random_state=42)

当我检查例如X_test和y_test(两者应该相同)的长度时,它返回相同的值。但是当我尝试调用X_test [len(X_test)]时,它告诉我索引超出了轴0的界限。但是对于y_test [len(y_test)],它给了我一个正确的值。有谁知道为什么?因为X_test中的最后一行和y_test中的最后一行先前在X中的同一行中合并,所以为什么现在X_test的最后一行不存在,而对于y_test它是什么呢?

1 个答案:

答案 0 :(得分:1)

python,pandas,numpy,scipy等中的

数组在索引时基于零。因此[0, 1, 2, 3]的长度为4.但[0, 1, 2, 3][4]将超出范围。请将最后一个元素称为[0, 1, 2, 3][4 - 1][0, 1, 2, 3][-1]

在你的情况下

X_test[len(X_test) - 1]

或者

X_test[-1]