[PYTHON] 없음 값이있는 Pyspark 데이터 프레임 열 필터링
PYTHON없음 값이있는 Pyspark 데이터 프레임 열 필터링
행 값으로 없음을 가진 PySpark 데이터 프레임을 필터링하려고합니다 :
df.select('dt_mvmt').distinct().collect()
[Row(dt_mvmt=u'2016-03-27'),
Row(dt_mvmt=u'2016-03-28'),
Row(dt_mvmt=u'2016-03-29'),
Row(dt_mvmt=None),
Row(dt_mvmt=u'2016-03-30'),
Row(dt_mvmt=u'2016-03-31')]
문자열 값으로 올바르게 필터링 할 수 있습니다.
df[df.dt_mvmt == '2016-03-31']
# some results here
그러나 이것은 실패합니다 :
df[df.dt_mvmt == None].count()
0
df[df.dt_mvmt != None].count()
0
그러나 각 카테고리에는 분명히 가치가 있습니다. 무슨 일이야?
해결법
-
==============================
1.Column.isNull / Column.isNotNull을 사용할 수 있습니다.
Column.isNull / Column.isNotNull을 사용할 수 있습니다.
df.where(col("dt_mvmt").isNull()) df.where(col("dt_mvmt").isNotNull())
간단히 NULL 값을 버리려면 다음과 같이 na.drop을 부분 인수와 함께 사용할 수 있습니다.
df.na.drop(subset=["dt_mvmt"])
SQL NULL이 정의되지 않았기 때문에 NULL을 가진 평등 기반 비교는 작동하지 않습니다. 따라서 다른 값과 비교하려고하면 NULL이 반환됩니다.
sqlContext.sql("SELECT NULL = NULL").show() ## +-------------+ ## |(NULL = NULL)| ## +-------------+ ## | null| ## +-------------+ sqlContext.sql("SELECT NULL != NULL").show() ## +-------------------+ ## |(NOT (NULL = NULL))| ## +-------------------+ ## | null| ## +-------------------+
값을 NULL과 비교하는 유일한 유효한 메소드는 isNull / isNotNull 메소드 호출과 동일한 IS / IS NOT입니다.
-
==============================
2.그냥 isNotNull 함수를 사용해보십시오.
그냥 isNotNull 함수를 사용해보십시오.
df.filter(df.dt_mvmt.isNotNull()).count()
-
==============================
3.dt_mvmt 열의 값이 null이 아닌 항목을 얻으려면 다음을 수행하십시오.
dt_mvmt 열의 값이 null이 아닌 항목을 얻으려면 다음을 수행하십시오.
df.filter("dt_mvmt is not NULL")
우리가 가지고있는 엔트리가
df.filter("dt_mvmt is NULL")
from https://stackoverflow.com/questions/37262762/filter-pyspark-dataframe-column-with-none-value by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 단위 테스트에서 open (file_name) 조롱 (0) | 2018.10.23 |
---|---|
[PYTHON] Tensorflow r1.0 : 요구 사항을 만족하는 버전을 찾을 수 없습니다. tensorflow (0) | 2018.10.23 |
[PYTHON] Python의 unittest 및 동적 테스트 케이스 생성 [duplicate] (0) | 2018.10.23 |
[PYTHON] 파일을 수치로 어떻게 정렬합니까? (0) | 2018.10.23 |
[PYTHON] 파이썬 - 파이프와 쉘 명령을 실행하는 방법? (0) | 2018.10.23 |