2016-03-16 25 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 .. :) –