2017-01-21 7 views
1

열 값이 목록 내에없는 (제외로 필터링하는) 데이터 프레임 내의 모든 행을 가져 오려고합니다. 일례로서 제외로 isin을 사용하여 pyspark 데이터 프레임 필터링

:

+---+---+ 
| id|bar| 
+---+---+ 
| 1| a| 
| 2| b| 
| 3| b| 
| 4| c| 
| 5| d| 
+---+---+ 

는 I 만 바 ('A'또는 'B')가 어디에 행을 제외 할 :

df = sqlContext.createDataFrame([('1','a'),('2','b'),('3','b'),('4','c'),('5','d')] 
,schema=('id','bar')) 

는 I 데이터 프레임을 얻는다.

이 될 SQL 표현식 문자열을 사용 :

df.filter('bar not in ("a","b")').show() 

한 번에 하나 개의 항목을 SQL 식의 문자열을 사용하거나 제외하지 않고 그 일을하는 방법이 있나요?

편집 :

은 내가 사용하려는 제외 된 값의 목록 [ 'a', 'b'가,이 것입니다.

답변

6

필자는 ~이 필요한 기능을 제공하지만 아직 그것에 대한 적절한 문서를 찾을 수 없습니다.

df.filter(~col('bar').isin(['a','b'])).show() 



+---+---+ 
| id|bar| 
+---+---+ 
| 4| c| 
| 5| d| 
+---+---+ 
2
df.filter((df.bar != 'a') & (df.bar != 'b')) 
5

또한 이것과 반전 연산자 ('~'를) 이용의 차이가이

df.filter(col('bar').isin(['a','b']) == False).show() 
+0

처럼 될 수 있을까? – Munick

+0

나는 그렇게 생각하지 않는다. –

관련 문제