2012-08-23 50 views
316

thể trùng lặp:
how to filter the dataframe rows of pandas by “within”/“in”?Sử dụng một danh sách các giá trị để chọn các hàng từ một dataframe gấu trúc

phép nói rằng tôi có dataframe gấu trúc sau:

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 

tôi có thể tập hợp con dựa trên một giá trị cụ thể:

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

    A B 
2 3 3 

Nhưng làm cách nào để có thể tập hợp con dựa trên danh sách giá trị? - một cái gì đó như thế này:

list_of_values = [3,6] 

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

Đây có phải là thực sự là một trùng lặp? Có cách nào để có được tập hợp con mà không cần sử dụng không? – Chogg

Trả lời

486

Đây thực sự là một bản sao của how to filter the dataframe rows of pandas by "within"/"in"?, dịch phản ứng lại ví dụ của bạn cung cấp:

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

Bạn sẽ trả lại các giá trị này theo thứ tự danh sách như thế nào? Ví dụ, 'list_of_values' có giá trị 3 rồi 6 nhưng khung được trả về với 6 rồi 3. Tôi không nói về một kiểu đơn giản, thay vì cách chúng ta có thể trả về theo thứ tự các giá trị trong danh sách. –

+0

Đây là ví dụ về lập chỉ mục boolean giữ thứ tự khỏi chỉ mục, xem http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin để biết thêm chi tiết. Một loại sau khi lựa chọn là cần thiết. –

+0

Điều này đã giúp tôi http://stackoverflow.com/a/29108799/5629831 –

Các vấn đề liên quan