2014-04-21 41 views
1

在pandas數據框中,我想過濾掉所有具有2個以上NaN的行。 Essentiallly我有4列,我可以只保留至少2列有限值的那些行。過濾超過特定數量的行的行

有人可以建議如何做到這一點?

+0

如果回答您的問題,您可以接受我的回答 – EdChum

回答

3

下應該工作

df.dropna(thresh=2) 

online docs

我們這裏做的是將任何NaN行,那裏有一排2個或更多非NaN值。

例子:

In [25]: 

import pandas as pd 

df = pd.DataFrame({'a':[1,2,NaN,4,5], 'b':[NaN,2,NaN,4,5], 'c':[1,2,NaN,NaN,NaN], 'd':[1,2,3,NaN,5]}) 

df 

Out[25]: 

    a b c d 
0 1 NaN 1 1 
1 2 2 2 2 
2 NaN NaN NaN 3 
3 4 4 NaN NaN 
4 5 5 NaN 5 

[5 rows x 4 columns] 

In [26]: 

df.dropna(thresh=2) 

Out[26]: 

    a b c d 
0 1 NaN 1 1 
1 2 2 2 2 
3 4 4 NaN NaN 
4 5 5 NaN 5 

[4 rows x 4 columns] 

編輯

對於它的工作原理,但你要注意,你必須知道的列數,並設置適當的thresh值上面的例子中,我原以爲這意味着NaN值的數量,但它實際上意味着數值爲NaN值。