2012-08-23 255 views
316

可能重复:
how to filter the dataframe rows of pandas by “within”/“in”?使用值的列表从熊猫数据框中选择行

可以说我有以下的熊猫数据框:

df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]}) 
df 

    A B 
0 5 1 
1 6 2 
2 3 3 
3 4 5 

我可以基于特定值的子集:

x = df[df['A'] == 3] 
x 

    A B 
2 3 3 

但是我怎么能基于值列表子集? - 这样的事情:

list_of_values = [3,6] 

y = df[df['A'] in list_of_values] 
+0

这真的是一个重复?有没有办法让这个子集没有使用in? – Chogg

回答

486

这的确是how to filter the dataframe rows of pandas by "within"/"in"?复制,翻译成你的榜样响应给出了:

In [5]: df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]}) 

In [6]: df 
Out[6]: 
    A B 
0 5 1 
1 6 2 
2 3 3 
3 4 5 

In [7]: df[df['A'].isin([3, 6])] 
Out[7]: 
    A B 
1 6 2 
2 3 3 
+2

你会如何按照列表的顺序返回这些值?例如,“list_of_values”的值为3,然后是6,但是帧的返回值是6,然后是3.我不是在谈一个简单的排序,而是我们能够按照列表中值的顺序返回。 –

+0

这是布尔索引的一个例子,它将索引从索引中删除,有关更多详细信息,请参阅http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin。需要选择之后进行排序。 –

+0

这帮了我http://stackoverflow.com/a/29108799/5629831 –