如何根据值列表选择pandas中的行

时间:2016-02-06 17:42:04

标签: python pandas

我正在尝试找出一种方法,我可以在pandas数据框中选择行,因为某些值将在我的列表中。例如

df = pd.DataFrame(np.arange(6).reshape(3,2), columns=['A','B'])
   A  B
0  0  1
1  2  3
2  4  5

我知道我可以选择某一行,例如

df[df.A==0]

将选择A = 0的行。我想要的是选择多个行,其值将在我的列表中,例如在[0,2]中的A.我试过了

df[df.A in [0,2]]
df[list(df.A)==[0,2]]

但没有任何作用。在R语言中,我可以提供%in%运算符。在python语法中我们可以在[0,2]中使用A等。在这种情况下,如何在pandas中选择行的子集? 谢谢, 瓦伦丁。

2 个答案:

答案 0 :(得分:11)

pd.isin()将选择多个值:

>>> df[df.A.isin([0,2])]
   A  B
0  0  1
1  2  3

答案 1 :(得分:2)

如果你不喜欢这种语法,你也可以使用query(在2014年的pandas 0.13中引入):

>>> df.query('A in [0,2]')
   A  B
0  0  1
1  2  3