2017-02-28 97 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