2012-08-23 253 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 –