2017-04-04 59 views
0

我想刪除python中列[3]不是0的行。我想刪除python中的一行

#prepare 
from numpy import nan as NA 
from pandas import Series,DataFrame 

data=DataFrame([[1.,6.5,3.,0],[1.,NA,NA,0.],[NA,NA,NA,1],[NA,6.5,3.,7.]]) 
data 
    0 1 2 3 
0 1.0 6.5 3.0 0.0 
1 1.0 NaN NaN 0.0 
2 NaN NaN NaN 1.0 
3 NaN 6.5 3.0 7.0 

我執行下面的代碼,但它沒有很好地工作。

Third=data[3] 
for i in range(len(data.index)): 
if not Third[i] is 0: 
    drop_idx=[i] 
    data.drop(drop_idx,axis=0) 

結果

 0 1 2 3 
1 1.0 NaN NaN 0.0 
2 NaN NaN NaN 1.0 
3 NaN 6.5 3.0 7.0 
    0 1 2 3 
0 1.0 6.5 3.0 0.0 
2 NaN NaN NaN 1.0 
3 NaN 6.5 3.0 7.0 
    0 1 2 3 
0 1.0 6.5 3.0 0.0 
1 1.0 NaN NaN 0.0 
3 NaN 6.5 3.0 7.0 
    0 1 2 3 
0 1.0 6.5 3.0 0.0 
1 1.0 NaN NaN 0.0 
2 NaN NaN NaN 1.0 

我想知道如何得到以下result.Could你告訴我哪裏錯了?

 0 1 2 3 
0 1.0 6.5 3.0 0.0 
1 1.0 NaN NaN 0.0 

回答

0

這將做的工作:

import pandas as pd 
data=pd.DataFrame([[1.,6.5,3.,0],[1.,None,None,0.],[None,None,None,1],[None,6.5,3.,7.]]) 
data=data[data[3]==0] 

然後data

0 1 2 3 
0 1.0 6.5 3.0 0.0 
1 1.0 NaN NaN 0.0 

你也可以做到這一點就地如下:

import pandas as pd 
data=pd.DataFrame([[1.,6.5,3.,0],[1.,None,None,0.],[None,None,None,1],[None,6.5,3.,7.]]) 
data.drop(data[data[3]!=0].index,inplace=True)