2013-10-29 2 views
5

Ich habe ein Series-Objekt (nennen wir das MySeries), die eine Liste von ganzen Zahlen enthält.Äquivalent von "in" Schlüsselwort oder Unterabfrage in Pandas

Ich habe auch einen separaten Datenrahmen (zB MyDataFrame), der eine Spalte/Feld namens MyField enthält.

ich alle Datensätze aus MyDataFrame auswählen möchte, wenn der Wert in MyField in MySeries ist, würde

Die äquivalente SQL sein:

Select * from MyDataFrame 
where MyField in 
    (select * from MySeries) 

Könnte jemand, den besten Weg vorschlagen, dies zu tun?

Vielen Dank für jede Hilfe.

Antwort

4

können Sie isin() Funktion:

>>> df = pd.DataFrame({'A':[1,2,3,4,5], 'B':list('ABCDE')}) 
>>> f = pd.Series([1,2]) 
>>> df[df['A'].isin(f)] 
    A B 
0 1 A 
1 2 B 

so, zuerst Sie fite Serie erhalten:

>>> df['A'].isin(f) 
0  True 
1  True 
2 False 
3 False 
4 False 

Und es dann benutzen, um Ihre Datenrahmen zu filtern

Verwandte Themen