2012-08-23 35 views
316

Duplicar posibles:
how to filter the dataframe rows of pandas by “within”/“in”?utilizar una lista de valores para seleccionar filas de una trama de datos pandas

Digamos que tengo la siguiente trama de datos pandas:

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 

I puede subconjunto en función de un valor específico:

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

    A B 
2 3 3 

Pero, ¿cómo puedo subconjunto en función de una lista de valores? - algo como esto:

list_of_values = [3,6] 

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

Lo que tienes es un duplicado? ¿Hay alguna manera de obtener el subconjunto sin usar el in? – Chogg

Respuesta

486

Este es de hecho un duplicado de how to filter the dataframe rows of pandas by "within"/"in"?, traduciendo la respuesta a su ejemplo da:

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

¿Cómo devolvería estos valores en el orden de la lista? Por ejemplo, 'list_of_values' tiene valores 3 y 6, pero el cuadro se devuelve con 6 y luego 3. No estoy hablando de un tipo simple, sino de qué tan específicamente podemos volver en el orden de los valores en la lista. –

+0

Este fue un ejemplo de indexación booleana que mantiene el orden fuera del índice, consulte http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin para obtener más detalles. Un tipo después de la selección es necesaria. –

+0

Esto me ayudó http://stackoverflow.com/a/29108799/5629831 –

Cuestiones relacionadas