2017-04-04 53 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)