2013-07-24 78 views
1

我在使用熊貓讀取csv文件時遇到了一個問題。我有的CSV文件格式爲:使用Python跳過csv文件中的行熊貓

Num Date  Value1 Value2 Value3 
1 7/29/11 1  2  3  
2 7/22/11 NA  3  1  
3 7/15/11 5  NA  NA 
4 7/6/11 -1  0  2 

我想用pandas來讀取這個csv文件。但是,我需要跳過任何列條目爲NA的行(在這種情況下,我需要跳過第2行和第3行)。

謝謝!

回答

2

由於@Rutger指出,你可以簡單地使用dropna

In [11]: df.dropna(subset=['Value1', 'Value2', 'Value3']) 
Out[11]: 
    Num  Date Value1 Value2 Value3 
0 1 7/29/11  1  2  3 
3 4 7/6/11  -1  0  2 

最初的辦法,我認爲(這顯然不是最優的),一旦你在閱讀它作爲一個數據幀就可以刪除使用notnull(您想只保留這些都是notnull那些行)這些行:

In [21]: df.loc[:, ['Value1', 'Value2', 'Value3']].apply(pd.notnull) 
Out[21]: 
    Value1 Value2 Value3 
0 True True True 
1 False True True 
2 True False False 
3 True True True 

In [22]: df.loc[:, ['Value1', 'Value2', 'Value3']].apply(pd.notnull).all(1) 
Out[22]: 
0  True 
1 False 
2 False 
3  True 
dtype: bool 

而且只選擇那些行:

In [23]: df[df.loc[:, ['Value1', 'Value2', 'Value3']].apply(pd.notnull).all(1)] 
Out[23]: 
    Num  Date Value1 Value2 Value3 
0 1 7/29/11  1  2  3 
3 4 7/6/11  -1  0  2 

In [24]: df = df[df.loc[:, ['Value1', 'Value2', 'Value3']].apply(pd.notnull).all(1)] 
+0

感謝安迪!這是完美的。 :) –

+2

是不是隻相當於'df.dropna()'?如果您只想將'ValueX'列考慮在內,您可以使用'df.dropna(subset = ['Value1','Value2','Value3'])''。 –