在pandas中等效“in”关键字或子查询

时间:2013-10-29 19:07:09

标签: python pandas

我有一个Series对象(让我们称之为MySeries),其中包含一个整数列表。

我还有一个单独的数据框(比如MyDataFrame),其中包含一个名为MyField的列/字段。

我想从MyDataFrame中选择MyField中的值MySeries

的所有记录

等效的SQL将是:

Select * from MyDataFrame 
where MyField in 
    (select * from MySeries)

有人能建议最好的方法吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

您可以使用isin()功能:

>>> df = pd.DataFrame({'A':[1,2,3,4,5], 'B':list('ABCDE')})
>>> f = pd.Series([1,2])
>>> df[df['A'].isin(f)]
   A  B
0  1  A
1  2  B

所以,首先你得到fiter系列:

>>> df['A'].isin(f)
0     True
1     True
2    False
3    False
4    False

然后使用它来过滤您的DataFrame