2012-12-18 30 views
12

Q與此類似: use a list of values to select rows from a pandas dataframe使用熊貓選擇使用數據幀中兩個不同列的行?

我想要dataframe,如果兩列中的任一值都在列表中。 。 返回兩列(相結合的#1和#4的結果

import numpy as np 
from pandas import * 


d = {'one' : [1., 2., 3., 4] ,'two' : [5., 6., 7., 8.],'three' : [9., 16., 17., 18.]} 

df = DataFrame(d) 
print df 

checkList = [1,7] 

print df[df.one == 1 ]#1 
print df[df.one == 7 ]#2 
print df[df.two == 1 ]#3 
print df[df.two == 7 ]#4 

#print df[df.one == 1 or df.two ==7] 
print df[df.one.isin(checkList)] 

回答

23

你近了它,但你必須使用"bitwise or"操作:

In [6]: df[(df.one == 1) | (df.two == 7)] 
Out[6]: 
    one three two 
0 1  9 5 
2 3  17 7 

In [7]: df[(df.one.isin(checkList)) | (df.two.isin(checkList))] 
Out[7]: 
    one three two 
0 1  9 5 
2 3  17 7