PySpark 에서 NoneType을 Filtering 하는 방법 (any, all, subset)

pyspark에서 drop method는 NULL을 가진 행을 제거하는데 가장 간단한 함수다. 기본적으로 NULL 값을 가진 행을 모두 제거를 한다. 모든 컬럼이 NULL인 경우 제거를 하고, 하나의 컬럼이 NULL인 경우 제거를 하고 싶은 경우가 있을것이다. 이런 경우에 어떻게 다르게 진행하는지 "any", "all"을 통해 설명

위 작업을 SQL에서 진행한다면 WHERE 절에 해당 컬림이 NULL인지 체크하는 구문을 넣어야 한다. 만약 모든 컬럼에 대해서 해야 하면? 모든 컬럼을 명시해야하는 단점이 있다. (SELECT * FROM TABLE WHERE COL1 IS NOT NULL)

  • drop 메소드에 인수
    • any: 모든 행의 컬럼값 중 하나라도 NULL의 값을 가지면 해당 행을 제거
    • all: 모든 컬럼 값이 NULL이거나 NaN인 경우에만 해당 행을 제거

위에서 보면 항상 "모든"이 조건이 된다. 하지만 drop 인자중에 subset을 이용하면 특정 컬럼에 대해서만 drop을 진행할 수 있다. 아래 소스코드 참고

소스코드

+ Recent posts