없음 값으로 Pyspark 데이터 프레임 열 필터링
None
행 값 이있는 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
그러나 각 카테고리에는 확실히 가치가 있습니다. 무슨 일이야?
Column.isNull
/ 사용할 수 있습니다 Column.isNotNull
.
df.where(col("dt_mvmt").isNull())
df.where(col("dt_mvmt").isNotNull())
단순히 NULL
값을 삭제 하려면 인수 na.drop
와 함께 사용할 수 있습니다 subset
.
df.na.drop(subset=["dt_mvmt"])
NULL
SQL NULL
에서 정의되지 않았으므로 다른 값과 비교하려고 시도하면 다음과 같은 결과가 반환되므로 동등 기반 비교가 작동하지 않습니다 NULL
.
sqlContext.sql("SELECT NULL = NULL").show()
## +-------------+
## |(NULL = NULL)|
## +-------------+
## | null|
## +-------------+
sqlContext.sql("SELECT NULL != NULL").show()
## +-------------------+
## |(NOT (NULL = NULL))|
## +-------------------+
## | null|
## +-------------------+
값과 비교하기에 유효한 방법 NULL
이다 IS
/ IS NOT
받는 등가있는 isNull
/의 isNotNull
메소드 호출.
isNotNull 함수를 사용하십시오 .
df.filter(df.dt_mvmt.isNotNull()).count()
dt_mvmt
열의 값 이 null이 아닌 항목을 얻으려면
df.filter("dt_mvmt is not NULL")
null 인 항목의 경우
df.filter("dt_mvmt is NULL")
열 = 없음 인 경우
COLUMN_OLD_VALUE
----------------
None
1
None
100
20
------------------
데이터 프레임에 임시 테이블 만들기를 사용하십시오.
sqlContext.sql("select * from tempTable where column_old_value='None' ").show()
그래서 사용하십시오 : column_old_value='None'
PySpark는 산술, 논리 및 기타 조건에 따라 다양한 필터링 옵션을 제공합니다. NULL 값이 있으면 추가 프로세스를 방해 할 수 있습니다. 이를 제거하거나 통계적으로 전가하는 것이 선택이 될 수 있습니다.
다음 코드 세트를 고려할 수 있습니다.
# Dataset is df
# Column name is dt_mvmt
# Before filtering make sure you have the right count of the dataset
df.count() # Some number
# Filter here
df = df.filter(df.dt_mvmt.isNotNull())
# Check the count to ensure there are NULL values present (This is important when dealing with large dataset)
df.count() # Count should be reduced if NULL values are present
나는 또한 시도 할 것이다 :
df = df.dropna(subset=["dt_mvmt"])
열에 없음 값이있는 레코드를 필터링하려면 아래 예를 참조하십시오.
df=spark.createDataFrame([[123,"abc"],[234,"fre"],[345,None]],["a","b"])
이제 null 값 레코드를 필터링합니다.
df=df.filter(df.b.isNotNull())
df.show()
DF에서 해당 레코드를 제거하려면 아래를 참조하십시오.
df1=df.na.drop(subset=['b'])
df1.show()
참고 URL : https://stackoverflow.com/questions/37262762/filter-pyspark-dataframe-column-with-none-value
'Program Tip' 카테고리의 다른 글
Windows 배치 파일에 여러 색상을 사용하는 방법은 무엇입니까? (0) | 2020.10.28 |
---|---|
목록에 대한 ViewModel 유효성 검사 (0) | 2020.10.28 |
CSS 사이드 바 높이 100 % (0) | 2020.10.28 |
iTunes Connect API (0) | 2020.10.28 |
파이프의 다른 쪽 끝에 프로세스가 없습니다 (SQL Server 2012) .No process is on the other end of the pipe (SQL Server 2012) (0) | 2020.10.28 |