初学者熊猫,无法使用第一列保存结果

时间:2018-10-24 13:45:13

标签: python python-3.x pandas

我正在学习python,但我无法将结果提交给kaggle泰坦尼克号比赛。在下面的surv_pred中包含我幸存的结果数组 当T包含我的数据

show_table(T,5)
# this results in :
  

样本数据输入:5
  PassengerId 5
  年龄0.35000000000000003
  SibSp 0.0
  帕奇0.0
  票价0.0008050000000000002
  RelationsOnBoard 0.0
  DatingRank 0.3
  甲板0.0
  女0
  港口A 0
  港口B 1
  harbourC 0
  ClassUp 0
  ClassMid 0
  ClassLow 1
  HasCabin 0
  AgeUnknown 0
  Family_Size 0.0
  票价每人0.008050000000000002
  小屋3类1
  Cabin2ndClass 0
  Cabin1stClass 0
  CabinLuxeryClass 0
  IdealFamSize 0

surv_pred = clf.predict(T)
print(surv_pred)

#this results in a binary array [1 0 1 1 0 1 .... etc

# from here i have python trouble:

ids =  T.loc['PassengerId']
submissions = pd.DataFrame('PassengerId' = ids ,'survived' = surv_pred)
submissions.to_csv("submit_v3.csv",index=False)

我尝试了代码的各种变体,但不知何故我无法获得T ea T ['passengerId']的第一列。使上述代码正常工作,将结果保存到csv文件中。熊猫以及保存和选择方面的问题。 ids=T['passenderId']也不起作用。

上面的代码有什么问题?

我遇到了类似KeyError的错误:“标签[PassengerId]不在[索引]中”
造成以下错误:ids = T.loc ['PassengerId']
我不明白,因为PassengerId很明显在那儿 我什至试图通过在代码上方的所有内容中确保这一点。

    T.rename(columns={ T.columns[0]: 'PassengerId' },inplace=True)

2 个答案:

答案 0 :(得分:0)

代码:

submissions = pd.DataFrame('PassengerId' = ids ,'survived' = surv_pred)

产生此问题

您应该这样做:

submissions = pd.DataFrame({'PassengerId' : ids ,'survived' : surv_pred})

答案 1 :(得分:0)

您的想法是列中的所有数据

ids = T.loc [:,'PassengerId']。values

参考 “交换列值的正确方法是使用原始值:”

https://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-integer