2016-11-17 72 views
2

我想通過所有零零的數據框來過濾數據。我的DF是:Python熊貓濾波器零單元格

Name Fruit Total 
0 Steve Orange 0 
1 Bob  Apple 15 
2 Cindy Grapes 27 
3 Grant Orange 37 

我想從數據DF中刪除史蒂夫。這裏是熊貓新手,但我已經嘗試過,看起來並不奏效。我曾嘗試查看loc的文檔,但我想我在這裏如何使用loc缺少一些東西。

df.loc[(df!=0).any(axis=1)] 

這只是一個例子。我想刪除所有零的Total。

+1

如果你只是基於列的'Total'過濾功能,你可以這樣做:'DF [df.Total != 0]' – Psidom

回答

2

使用boolean indexing

print (df[~(df==0).any(axis=1)]) 
    Name Fruit Total 
1 Bob Apple  15 
2 Cindy Grapes  27 
3 Grant Orange  37 

但如果只有數字是列Total使用:

df[df.Total != 0] 

說明

如果DataFrame是多個數字列 - 這樣你就可以得到0不僅在最後一列,而且還在其他列,使用:

首先比較所有值與0 - 讓boolean DataFrame

print (df==0) 
    Name Fruit Total 
0 False False True 
1 False False False 
2 False False False 
3 False False False 

如果需要找到至少一個True0)每列都需要anyaxis=0

print ((df==0).any(axis=0)) 
Name  False 
Fruit False 
Total  True 
dtype: bool 

但是,如果需要至少一行True0)每行添加axis=1

print ((df==0).any(axis=1)) 
0  True 
1 False 
2 False 
3 False 
dtype: bool 

反轉boolean Series通過~

print (~(df==0).any(axis=1)) 
0 False 
1  True 
2  True 
3  True 
dtype: bool 

,並使用boolean indexing

print (df[~(df==0).any(axis=1)]) 
    Name Fruit Total 
1 Bob Apple  15 
2 Cindy Grapes  27 
3 Grant Orange  37 
+0

這工作謝謝。你介意我是否問〜在做什麼,爲什麼我將軸設置爲1 –

+1

請檢查我的編輯。 – jezrael