2016-06-09 86 views
4

我有一個包含有編號的列行的熊貓數據幀:過濾大熊貓數據幀的行值

1 2 3 4 5 
a 0 0 0 0 1 
b 1 1 2 1 9    
c 2 2 2 2 2 
d 5 5 5 5 5 
e 8 9 9 9 9 

如何可以過濾掉其中的列的子集都高於或低於某一值的行?因此,例如:我想刪除列1到列表3中所有值都不是> 3的所有行。在上述內容中,這將使我只剩下行d和e。

我正在過濾的列和我檢查的值都是參數。

我已經嘗試了幾件事情,這是我得到的最接近:

df[df[range(1,3)]>3] 

任何想法?

+1

好問題! – bernie

回答

5

我在這個函數中使用locall

def filt(df, cols, thresh): 
    return df.loc[(df[cols] > thresh).all(axis=1)] 

filt(df, [1, 2, 3], 3) 

    1 2 3 4 5 
d 5 5 5 5 5 
e 8 9 9 9 9 
+0

真棒解決方案! – bernie

+0

感謝編輯@Merlin – piRSquared

+0

@piRSquared NP ---在這裏幫助 – Merlin

1

你可以做到這一點,而無需使用apply

In [73]: 
df[(df.ix[:,0:3] > 3).all(axis=1)] 

Out[73]: 
    1 2 3 4 5 
d 5 5 5 5 5 
e 8 9 9 9 9 

所以這個切片DF只使用ix第3列然後我們與標量3進行比較,然後撥打all(axis=1)創建一個布爾序列來掩蓋索引