2017-02-28 105 views
1

我知道如何與許多NA從數據幀中刪除列的列名,的Python:找到NA值高於閾值

df = df.dropna(axis=1, thresh=100) 

但是,有沒有辦法知道他們的名字?

我雖然創造這樣的事情:

na_values = df.isnull().sum()/len(df) 

這給了我每列

x_9  0.011700 
x_10  0.001307 
x_11  0.025830 
x_12  0.011691 
x_13  0.002739 
x_14  0.238406 

內的NA的部分清單,但我想僅提取具有上述的那些0.2的閾值,如x_14。

任何想法?我想:

print(i > 0.4 for i in na_values) 

,但它不工作

+1

你可以做'na_values [na_values> 0.2]' – EdChum

+0

我甚至都不知道。謝謝!很新,你看到 – Jespar

+0

哦,對不起,我試圖這樣做,但它不讓我,直到一段時間過去了。所以我回到了我的代碼,我打算將問題標記爲稍後回答。謝謝你的回答和提醒! – Jespar

回答

1

您可以使用相同的Series用布爾條件來掩蓋系列:

In [36]: 
na_values[na_values>0.2] 

Out[36]: 
      na 
val   
x_14 0.238406 

你可以看到面具:

In [37]: 
na_values > 0.2 

Out[37]: 
val 
x_9  False 
x_10 False 
x_11 False 
x_12 False 
x_13 False 
x_14  True 
Name: na, dtype: bool 

所以這會掩蓋掉所有的False