2012-08-23 4 views
316

Mögliche Duplizieren wählen:
how to filter the dataframe rows of pandas by “within”/“in”?eine Liste von Werten Verwenden Sie Zeilen aus einem Pandas Datenrahmen

Können sagen, ich habe folgendes Pandas Datenrahmen:

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 Untermenge basierend auf einem bestimmten Wert:

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

    A B 
2 3 3 

Aber wie kann ich Teilmenge basierend auf einer Liste von Werten? - etwa so:

list_of_values = [3,6] 

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

Ist das wirklich ein Duplikat? Gibt es eine Möglichkeit, die Teilmenge zu erhalten, ohne das In zu verwenden? – Chogg

Antwort

486

Dies ist in der Tat ein Duplikat how to filter the dataframe rows of pandas by "within"/"in"?, übersetzt die Antwort auf Ihr Beispiel gibt:

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

Wie würden Sie diese Werte in der Reihenfolge der Liste zurückgeben? Zum Beispiel hat 'list_of_values' die Werte 3 und 6, aber der Rahmen wird mit 6 und dann 3 zurückgegeben. Ich spreche nicht von einer einfachen Sortierung, sondern wie spezifisch wir in der Reihenfolge der Werte in der Liste zurückkehren können. –

+0

Dies war ein Beispiel für eine boolesche Indizierung, die die Reihenfolge vom Index hält, siehe http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin für weitere Details. Eine Sortierung nach der Auswahl ist erforderlich. –

+0

Das hat mir geholfen http://stackoverflow.com/a/29108799/5629831 –

Verwandte Themen