2016-03-16 64 views
1

使用「或」我可以找到在我的數據框使用在數據幀

df.query('Name=="ALEX" or Name=="KIM"') 



     Name Gender 
4556 ALEX ('male', 'female') 
4560 KIM ('female', 'male') 

然而,當我使用df[df.Name==('ALEX' or 'KIM')],將返回以下在名稱列ALEXKIM

 Name Gender 
4556 ALEX ('male', 'female') 

當我使用df[df.Name==('ALEX' and 'KIM')]返回如下:

 Name Gender 
4560 KIM ('female', 'male') 

所以,i)我怎樣才能找到Name是純粹pythonic方式的ALEX或KIM,以及ii)爲什麼邏輯的行爲與最後兩個例子一樣?

+0

爲什麼你覺得像'名稱==「ALEX」或名稱==」 KIM「'不是」純Pythonic「? – DeepSpace

+0

我的意思是不使用查詢命令。我有興趣使用最後兩個示例中的樣式獲得相同的結果。 –

+0

嘗試'df [(df.name =「ALEX」)或(df.name =「KIM」)]' –

回答

4

元件方面or運營商在熊貓是|or運算符不起作用,因爲它會與整個系列df.Name進行比較(因此會返回單個值)。您可以使用元素方面的操作是這樣的:

df[(df.Name == "ALEX") | (df.Name == "KIM")] 

或者,你可以使用isin方法:

df[df.Name.isin(["ALEX", "KIM"])] 
+0

我該如何使用和insted或這裏 –

+0

運算符是&&。 'df [(df.Name ==「ALEX」)&(df.Gender ==「F」)]' – ayhan

+0

Ya got it ... thanx .. :) –