본문 바로가기

빅데이터

pyspark 데이터프레임 조건절(when)로 데이터 처리하기

Pyspark를 사용해서 대용량의 데이터를 처리(process)할 때 일부 변환(Transformation)이 필요할 때가 있습니다. 일부 요구사항의 경우 가져온 데이터 프레임의 데이터에 조건절(conditional)을 추가해야할 때가 있습니다. 이때 pyspark에서 제공하는 조건절인 when을 사용하면 아주 유용한데요. 예를 들어 설명하도록 하겠습니다.

 

만약 아래와 같은 데이터가 있다고 가정합시다.

seoul corea 2019
newyork usa 2020
seoul corea 2043
newtork usa 2344
brisbane australia 2033

위 데이터를 보면 corea로 글자가 틀린 것을 확인할 수 있습니다. 첫번째 column이 seoul인 데이터만 두번째 column을 Korea로 변경하려면 아래와 같은 sudo code가 적당할 것 같습니다.

if first_column == 'seoul' then
	change 'corea' to 'korea'   

그럼 위 sudo code를 dataframe에서 처리하는 방법은 아래와 같습니다.

df.withColumn("_c1", when(col("_c0")=='seoul',lit("korea")).otherwise(lit(df["_c1"])))

dataframe을 불러올 때 컬럼명을 지정하지 않으면 _c0, _c1으로 자동 지정됩니다. 만약 _c0의 데이터가 seoul인 경우 'korea' 글자를 넣도록 하고 아닐때는 기존 데이터를 그대로 넣도록 하는 로직입니다.

만약 otherwise를 사용하지 않는다면 해당 column에는 빈값이 들어가게 됩니다.