2014-06-14 1 views
2

5 개의 열이있는 데이터 프레임 df가 있습니다. 첫 번째 열은 Phase이고 이름은 텍스트입니다. 나는 또한 시도a 또는 b 또는 c가 true 일 때 DataFrame에서 행 제거

df=df[df.Phase != 'xyz' or 'ab' or 'tlimit'] 

: 단계 중 하나를 'XYZ'또는 'AB'또는 'tlimit'

내가하지만이 작동하지 않았다 다음 시도 어디는 dataframe의 모든 행을 제거하고 싶습니다 :

df=df[df.Phase != 'xyz' or df.Phase!='ab' or df.Pase !='tlimit'] 

답변

2

df = df[~df.Phase.isin(['xyz', 'ab', 'tlimit'])]

+0

집합 목록보다 더 나은 것입니다. – Emre

+0

세 가지 요소가있는 경우 차이점에 신경 쓰는 것은 바보입니다. 제외 할 항목 집합이 가변적 인 경우 OP는이를 예를 들어 사용하는 도우미 함수에 쓸 수 있습니다. [내 콘텍스트 관리자 레시피] (http://stackoverflow.com/questions/20056458/list-comprehension-filtering-the-set-trap/20057101#20057101) 컨텍스트의 지속 시간 동안 세트로 작업 할 수 있습니다. 문제. 그러나 그 여분의 일은 *이 질문의 일부가 아닙니다. – ely

+0

@Emre 실제로는 isin이 세트로 만드는 것이 가장 먼저 구현되지만, 이것은 구현 세부 사항입니다 (나중에 더 낮은 레벨의 객체가 될 가능성이 있습니다). –

관련 문제