2016-05-19 6 views
1

Ich versuche, eine Möglichkeit zu finden, durch jede Spalte eines DataFrame zu durchlaufen und Zeilen mit einer bestimmten Zeichenfolge zu überprüfen und sie als Vorverarbeitungsschritt für zu löschen eine maschinelle Lernübung. Der Code, den ich habe, dass dies manuell tut geht wie folgt:Versuchen, Spalten zu durchlaufen und Zeilen mit bestimmten Zeichenfolge Wert in Pandas Dataframe zu löschen

train = train[train.Native_Country != ' ?'] 
train = train[train.Race != ' ?'] 
train = train[train.Work_Class != ' ?'] 
train = train[train.Occupation != ' ?'] 
train = train[train.Relationship != ' ?'] 
train = train[train.Sex != ' ?'] 
train = train[train.Work_Class != ' ?'] 
train = train[train.Occupation != ' ?'] 
train = train[train.Education != ' ?'] 

Es muss einen einfacheren Weg, um diese bestimmte Zeilen pro Spalte auszulassen oder löschen und ich fühle mich wie ich bin Grübeln, wie dies für Loop- zu tun wenn Schleife.

+0

Sind diese alle Spalten oder nur die str welche? Sind die ''? ''In den gleichen Reihen oder zufällig angeordnet? – EdChum

+0

Diese '?' sind zufällig durch einige Spalten angeordnet. Es scheint, dass sie anstelle von Nullwerten durch Zufallszahlen im gesamten Datensatz durch Fragezeichen ersetzt wurden. –

+1

Ihr Problem hier ist, dass Sie eine Menge von Informationen verlieren werden, wenn Sie Zeilen progressiv fallen lassen, wo "?" Sie können besser diese in 'NaN' konvertieren oder sie vielleicht füllen, waren diese Daten in einem CSV? Wenn ja, kannst du 'na_values ​​=' weitergeben? ', um diese als fehlende Werte zu behandeln, kannst du dann' df.dropna() ' – EdChum

Antwort

0

Nach off von EdChum Antwort, versuchen, etwas wie folgt aus:

columnsyouwant = ['Native_Country', 'Race', 'Work_Class'....] 

for col in columnsyouwant: 
    train[col] = train[col].replace(' ?', None) 

train.dropna(inplace=True) #default is how='any' in axis=0 (rows) 
+0

Ich denke,' df.replace ('?', Np.NaN) 'sollte auch abhängig von den' dtypes funktionieren – EdChum

Verwandte Themen