2016-05-19 21 views
1

DataFrameの各列を繰り返し処理し、特定の文字列を持つ行をチェックし、それらを前処理ステップとして削除する方法を見つけようとしています。機械学習練習。pandasデータフレームの列を繰り返して特定の文字列値を持つ行を削除しようとしています

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 != ' ?'] 

列ごとにこれらの特定の行を除外または削除する簡単な方法がなければならないと私はLOOP-のためにこれを行う方法をoverthinkingていますように私は感じる:私は次のように手動でこれが行くん持っているコードifループ。

+0

これらすべての列またはちょうどstrのものがありますか? ''? ''は同じ行にあるのか、ランダムに配置されていますか? – EdChum

+0

これらの '?'いくつかの列にランダムに配置されています。 null値を持つ代わりに、データセット全体で無作為に疑問符で置き換えられているようです。 –

+1

ここで問題になるのは、「?」という行が次第にドロップされると、多くの情報が失われるということです。これらをNaNに変換する方が良いかもしれませんし、おそらくCSVでこのデータを埋めていましたか?そうであれば 'na_values = '?''を渡して欠損値として扱うことができます。次に 'df.dropna() 'を呼び出すことができます – EdChum

答えて

0

EdChumの答えのオフの後、このような何かを試してみてください。

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

' df.replace( '?'、np.NaN) 'も' dtypes'sに依存して動作するはずです – EdChum

関連する問題