2017-01-01 4 views
0

Ich habe Dataframe df Ich wählte einige coulms davon und ich möchte sie in xtrain und xtest accoring zu einem coulmn namens Sevrice. Also raws mit 1 und o in den xtrain und nan in xtest.Teilen Sie Datenrahmen in zwei Sätze nach einer Spalte

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) 

ich diesen Fehler für logistic.predict(xtest)

X has 220 features per sample; expecting 307 

Antwort

0

Ich glaube, Sie brauchen isnull:

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

Eine andere Lösung ist Invertzucker boolean mask von ~:

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

Danke, Sie haben keine Ahnung, warum ich diesen Fehler X erhalten tun hat 220 Merkmale pro Probe; erwartet 307 –

+0

Es scheint ein Problem mit den Daten, ich teste es mit einigen Probe und es funktioniert, siehe bearbeiten. – jezrael

+0

Vielen Dank für Ihre Annahme. Ich versuche deinen Code mit deinem csv und demselben Problem. Problem ist 'xtrain' und' xtest' haben unterschiedliche Länge von Spalten, 'print (xtrain.info()) print (xtest.info())' – jezrael

Verwandte Themen