2017-09-10 26 views
1

過濾數據幀我有這樣一個數據幀:Python的 - 通過靈活的長字典

A B C 
1 1 3 5 
2 1 3 6 
3 2 4 7 
4 2 4 8 

我知道我可以篩選如下固定柱:

df[df[A]==1 & df[B]==3] 

但是,如果我想過濾DataFrame由靈活長度的字典組成:

dict = {'A':1, 'B':3, 'C':5]} 

dict = {'A':2, 'B':4} 

,我可以得到:

A B C 
1 1 3 5 

A B C 
3 2 4 7 
4 2 4 8 

我該怎麼做才能解決這個問題?

+2

我想你需要[this](https://stackoverflow.com/q/34157811/2901002) – jezrael

回答

1

如果您的字典在列表中有它的值,那麼您可以將它傳遞給DataFrame方法isin

d = {'A':[1], 'B':[3], 'C':[5]} 
df[df.isin(d)[list(d.keys())].all(axis=1)] 

    A B C 
1 1 3 5 

如果字典中有很多項目,可以自動將值轉換爲一個項目列表,如下所示。

{k:[v] for k,v in d.items()}