2017-01-01 4 views
0

У меня есть Dataframe df Я выбрал некоторые кулачки, и я хочу разделить их на xtrain и xtest, чтобы присоединиться к coulmn, называемому Sevrice. Таким образом, сырые с 1 и o в xtrain и нано в xtest.Разделите dataframe на два набора по столбцу

Service 
1 
0 
0 
1 
Nan 
Nan 

xtarin = df.loc[df['Service'].notnull(), ['Age','Fare', 'GSize','Deck','Class', 'Profession_title' ]] 

EDITED

ytrain = df['Service'].dropna() 
    Xtest=df.loc[df['Service'].isnull(),['Age','Fare','GSize','Deck','Class','Profession_title']] 
    import pandas as pd 
    from sklearn.linear_model import LogisticRegression 
    logistic = LogisticRegression() 
    logistic.fit(xtrain, ytrain) 
    logistic.predict(xtest) 

Я получаю эту ошибку для logistic.predict(xtest)

X has 220 features per sample; expecting 307 

ответ

0

Я думаю, что вам нужно isnull:

Xtest=df.loc[df['Service'].isnull(),['Age','Fare','GSize','Deck','Class','Profession_title']] 

Другим решением является инвертный boolean mask по ~:

mask = df['Service'].notnull() 
xtarin = df.loc[mask, ['Age','Fare', 'GSize','Deck','Class', 'Profession_title' ]] 
Xtest = df.loc[~mask, ['Age','Fare', 'GSize','Deck','Class', 'Profession_title' ]] 

EDIT:

df = pd.DataFrame({'Service':[1,0,np.nan,np.nan], 
        'Age':[4,5,6,5], 
        'Fare':[7,8,9,5], 
        'GSize':[1,3,5,7], 
        'Deck':[5,3,6,2], 
        'Class':[7,4,3,0], 
        'Profession_title':[6,7,4,6]}) 

print (df) 
    Age Class Deck Fare GSize Profession_title Service 
0 4  7  5  7  1     6  1.0 
1 5  4  3  8  3     7  0.0 
2 6  3  6  9  5     4  NaN 
3 5  0  2  5  7     6  NaN 

ytrain = df['Service'].dropna() 
xtrain = df.loc[df['Service'].notnull(), ['Age','Fare', 'GSize','Deck','Class', 'Profession_title' ]] 
xtest=df.loc[df['Service'].isnull(),['Age','Fare','GSize','Deck','Class','Profession_title']] 
import pandas as pd 
from sklearn.linear_model import LogisticRegression 
logistic = LogisticRegression() 
logistic.fit(xtrain, ytrain) 
print (logistic.predict(xtest)) 
[ 0. 0.] 
+0

Спасибо, у вас есть какие-либо идеи почему я получаю эту ошибку X имеет 220 функций на образец; ожидая 307 –

+0

Кажется, что-то проблема с данными, я тестирую его с помощью некоторого образца, и он работает, см. редактирование. – jezrael

+0

Благодарим вас за принятие. Я пробую ваш код с вашей csv и той же проблемой. Проблема заключается в том, что 'xtrain' и' xtest' имеют разную длину столбцов, 'print (xtrain.info()) print (xtest.info())' – jezrael

Смежные вопросы