2012-08-23 17 views
316

Eventuali duplicati:
how to filter the dataframe rows of pandas by “within”/“in”?Utilizzare un elenco di valori per selezionare le righe da un dataframe panda

Diciamo che ho il seguente panda dataframe:

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 può sottoinsieme basato su un valore specifico:

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

    A B 
2 3 3 

Ma come è possibile impostare un sottoinsieme in base a un elenco di valori? - qualcosa di simile:

list_of_values = [3,6] 

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

questo è davvero un duplicato? C'è un modo per ottenere il sottoinsieme senza usare l'in? – Chogg

risposta

486

Questo è davvero un duplicato di how to filter the dataframe rows of pandas by "within"/"in"?, traducendo la risposta al tuo esempio dà:

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

Come restituiresti questi valori nell'ordine della lista? Ad esempio, 'list_of_values' ha valori 3 e 6 ma il frame viene restituito con 6 quindi 3. Non sto parlando di un ordinamento semplice, piuttosto di quanto in modo specifico possiamo tornare nell'ordine dei valori nella lista. –

+0

Questo era un esempio di indicizzazione booleana che mantiene l'ordine fuori dall'indice, vedere http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin per ulteriori dettagli. È necessario un ordinamento dopo la selezione. –

+0

Questo mi ha aiutato http://stackoverflow.com/a/29108799/5629831 –

Problemi correlati