2013-06-11 267 views
2

我有熊猫系列,我们会打电话给我想使用作为筛选一个DF其中approved_fields:过滤熊猫据帧

approved_field(['Field1','Field2','Field3')] 

df 
    Field 
0 Field1 
1 Field4 
2 Field2 
3 Field5 
4 Field2 

应用approved_field过滤器后,产生的DF应该像:

Field 
0 Field1 
1 Field2 
2 Field2 

谢谢!

回答

5

您可以使用isin和布尔索引:

>>> import pandas as pd 
>>> df = pd.DataFrame({"Field": "Field1 Field4 Field2 Field5 Field2".split()}) 
>>> approved_fields = "Field1", "Field2", "Field3" 
>>> df['Field'].isin(approved_fields) 
0  True 
1 False 
2  True 
3 False 
4  True 
Name: Field, dtype: bool 
>>> df[df['Field'].isin(approved_fields)] 
    Field 
0 Field1 
2 Field2 
4 Field2 
3

请注意,您在您的预期解决方案指数掉

In [16]: approved_field = ['Field1','Field2','Field3'] 

In [17]: df = DataFrame(dict(Field = ['Field1','Field4','Field2','Field5','Field2'])) 

In [18]: df 
Out[18]: 
    Field 
0 Field1 
1 Field4 
2 Field2 
3 Field5 
4 Field2 

In [19]: df[df.Field.isin(approved_field)] 
Out[19]: 
    Field 
0 Field1 
2 Field2 
4 Field2 
+0

感谢杰夫,我在OP – ChrisArmstrong

+0

正确答案修正了这个,DSM只打你2分钟! – ChrisArmstrong

+0

这就是他们对兔子和兔子说的话:) – Jeff