2017-09-12 1 views
0

하나의 데이터 프레임 열에서 부분 집합을 선택하려고하는데 하나의 열에 두 조건을 적용하는 데 도움이 필요합니다. 예를 들어 아래 표에서 "Tom"과 "Chris"를 모두 선택하려면 어떻게합니까?데이터 프레임, 팬더의 단일 열에서 여러 조건

import pandas as pd 
dic={"Name":["Chris","Tom","Steven"], "Age":[12,34,55]} 
dic={"Name":["Chris","Tom","Steven"], "Age":[12,34,55]} 
df=pd.DataFrame(dic) 
df[df["Name"]=="Tom"] 

왜 선택 "나는"크리스 만, 언제와,로 대체 "선택합니다 톰 df[df["Name"]==("Chris" or "Tom")] 를 사용하는 경우에는 그것이이다

+0

귀하는 오산 세입니다 작업 순서가 다릅니다. 가장 먼저 일어나는 일은 꽤 기괴한 작업 인''Chris ''또는''Tom "'입니다. 파이썬에는 문자열에 '진실'이 있습니다. 비어 있지 않은 문자열은 'True'로 평가됩니다. 나머지는 MaxU의 설명을 따르십시오. –

답변

2

우리가 condition1 OR condition2을 확인할 때 - 그것이 충분 첫 번째 조건 경우

In [247]: 1 or 2 
Out[247]: 1 
: (이 하나 True을 가지고 충분하기 때문에) 두 번째는 확인되지 것 -/피연산자는 True, 그래서 최초의 하나에 해당하는 경우

및 첫 번째 경우 (모든 조건이 True을해야 때문에) True 우리는 또한 두 번째를 확인해야합니다

In [248]: 1 and 2 
Out[248]: 2 

하지만 첫 번째 조건이 False 경우 우리가를 확인 할 필요가 없습니다 동일한 논리가 문자열에 적용됩니다

In [250]: 0 and 1 
Out[250]: 0 

(참고 : 빈 문자열은으로 평가됩니다 - (이 전체 "일"False를 만들어 줄게이 하나가 False이 충분히 있기 때문에) 두 번째 8,492,923,210) :)

df[df["Name"]=="Chris"] 

는 팬더 방식으로 (제대로 수행하는 방법 :

In [242]: ("Chris" or "Tom") 
Out[242]: 'Chris' 

In [249]: ("Chris" and "Tom") 
Out[249]: 'Tom' 

을 그래서 당신은

df[df["Name"]==("Chris" or "Tom")] 

을 수행 할 때이 같은입니다

In [243]: df[df["Name"].isin(["Chris","Tom"])] 
Out[243]: 
    Age Name 
0 12 Chris 
1 34 Tom 
관련 문제