2017-09-22 71 views
1

我想刪除包含一定比例缺失值的列。 下面是一個工作示例:Python丟失包含大部分缺失值的列

raw_data = {'first_name': ['Jason', np.nan, 'Tina', 'Jake', 'Amy'], 
    'last_name': ['Miller', np.nan, 'Ali', 'Milner', 'Cooze'], 
    'age': [42, '' , '', '', 73], 
    'sex': ['m', np.nan, 'f', 'm', 'f'], 
    'preTestScore': [4, np.nan, np.nan, 2, 3], 
    'postTestScore': [25, np.nan, np.nan, 62, 70]} 
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 
    'sex', 'preTestScore', 'postTestScore']) 
df 
first_name last_name age sex preTestScore postTestScore 
0 Jason Miller  42 m 4.0    25.0 
1 NaN  NaN    NaN NaN    NaN 
2 Tina Ali    f NaN    NaN 
3 Jake Milner   m 2.0    62.0 
4 Amy  Cooze  73 f 3.0    70.0 

df = df.dropna(thresh=0.7*len(df), axis=1) 
df 
first_name last_name age sex 
0 Jason Miller  42 m 
1 NaN  NaN    NaN 
2 Tina Ali    f 
3 Jake Milner   m 
4 Amy  Cooze  73 f 

我怎麼可能會下降的「年齡」列呢?我花了幾個小時使用drop.na,試圖在空單元中放入零。我只是無法弄清楚如何檢測'年齡'欄中丟失的細胞。

回答

3

你需要replace,然後dropna

df=df.replace({'':np.nan}) 
df = df.dropna(thresh=0.7*len(df), axis=1) 
df 
Out[858]: 
    first_name last_name sex 
0  Jason Miller m 
1  NaN  NaN NaN 
2  Tina  Ali f 
3  Jake Milner m 
4  Amy  Cooze f 
+1

謝謝你這麼多!!!!!像魅力一樣工作..我會盡快接受答案(它現在不讓我接受)。 –

+0

@continuous_learner Yw btw下次你可以添加標籤熊貓;-) – Wen