2013-10-29 17 views
5

Ho un oggetto Series (chiamiamolo questo MySeries) che contiene un elenco di numeri interi.Equivalente di "in" parola chiave o sottoquery in panda

Ho anche un dataframe separato (ad esempio MyDataFrame), che include una colonna/campo chiamato MyField.

voglio selezionare tutti i record dalla MyDataFrame dove il valore in MyField è in MySeries

Lo SQL equivalente sarebbe:

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

Qualcuno potrebbe suggerire il modo migliore per farlo?

Grazie mille per qualsiasi aiuto.

risposta

4

è possibile utilizzare la funzione isin():

>>> 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 

così, prima si ottiene fiter Serie:

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

e poi usarlo per filtrare la dataframe