如何匹配数组长度和索引长度

时间:2019-03-01 14:44:11

标签: python pandas numpy

我想将两个数字列合并为一个数据集,我想另存为.csv文件。

实际上是Kaggle的泰坦尼克号数据集。

首先,我将用于特征工程的训练和测试数据集合并为:

split = len(train)
data =  pd.concat(objs=[train, test], axis=0).reset_index(drop=True)

然后我将它们拆分为模型训练:

#Split data
train = data[:split]
test = data[split:]

#Get variables for a model
x = train.drop(["Survived", "PassengerId"], axis=1)
y = train["Survived"]

#Do train data splitting
X_train, X_test, y_train, y_test = train_test_split(x,y,test_size=0.22, random_state=101)

现在,我想生成一个提交文件,尝试如下:

Id = test['PassengerId']
pred = vc.predict(X_test)

output = pd.DataFrame({
   'PassengerId' : Id, 
   'Survived': pred 
})

output.to_csv('~/Documents/Titanic/submission.csv', index=False)

... whih返回标题中的错误:

  

数组长度195与索引长度418不匹配

第三行

  

““幸存”:pred”

我尝试使用pd.concat()。reset_index()代替DataFrame,但是产生TypeError“无法连接类型为“”的对象”。

也许我现在看的时间太长了,但是看不到问题所在。 谢谢,如果可以的话,请提前。

1 个答案:

答案 0 :(得分:0)

实际上,我很快就解决了这个问题,所以我会回答我的问题。

解决方案是:

Id = test['PassengerId']
pred = vc.predict(X_test)

output = pd.concat([pd.DataFrame(Id), pd.DataFrame(pred)], axis=1)

output.to_csv('~/Documents/Titanic/submission.csv', index=False, header=True)

干杯。