끄적거림

[Tips] 조건걸고 새로운 컬럼 추가하기 in Pandas DataFrame 본문

Python/Data Handling

[Tips] 조건걸고 새로운 컬럼 추가하기 in Pandas DataFrame

Signing 2020. 8. 10. 16:47
728x90
반응형

R에서는 대부분의 핸들링을 자유롭게 하던 나는 파이썬으로 그 작업들을 하나씩 진행하고자 한다.

 


 

분석을 진행하기 위해서 데이터를 내가 원하는 모양으로 맞춰줄 필요가 있다.

 

현재 내가 분석을 진행하다 막힌 부분은 이렇다.

 

원하는 조건에 해당하면 특정 값, 아니면 다른 값으로 주어 새로운 컬럼을 만드는 것이다.

 

R에 익숙한 나는 다음 코드를 바로 떠올릴 수 있다.

iris %>%
	mutate(new_column = ifelse(Sepal.Length > 4, 'Large', 'Small'))

변수를 추가하는 함수인 dplyr의 mutate함수와 조건을 걸 수 있는 ifelse함수를 사용하면 간단히 만들 수 있다.

 

 

하지만 파이썬에서 이와 같은 작업을 진행하려면 어떻게 해야할까?

 

다음 코드와 같다.

iris['new_column'] = ['Large' if t else 'Small' for t in list(iris['Sepal.Length'] > 4)]

python에서는 변수를 추가하기 위해서 함수를 사용하진 않는다.(물론 때에 따라 변수를 추가하는 함수도 있을 수도 있겠지만..ㅎㅎ)

 

위와 같이 새로운 변수 명을 적어주고 그 변수에 리스트 꼴로 할당해주면 새로운 변수가 생성된다.

 

또한, 위 R에서 보았던 조건을 걸어주는 함수인 ifelse 함수는 사실 다른 프로그래밍 언어에서는 삼항연산자라고 불린다. 

 

삼항연산자는 말 그대로 연산을 하기 위해서 3개의 항이 필요해서 삼항연산자이다.

 

 

파이썬에서는 이 삼항연산자가 위 코드와 같이

'value1' if True else 'value2'

로 주어진다.

True부분에 조건을 주어서 그 조건에 해당하면(True일 경우) value1을, 해당하지 않으면(False일 경우) value2를 반환한다.

 

이런 삼항연산을 컴프리핸션를 통해 리스트로 만들어주었다.

(내 기대로는 그냥 컴프리핸션를 활용하지 않아도 될 거 같았는데..)

 

더 좋은 방법을 알고 계신분들은 댓글로 남겨주세요ㅎㅎ

 


(2020.08.13 수정)

데이터뉴비님께서 더 좋은 방법을 제시해주셨다.

https://data-newbie.tistory.com/559

 

[Pandas] 조건걸고 새로운 컬럼 추가하기

https://signing.tistory.com/55#comment5838430 [Tips] 조건걸고 새로운 컬럼 추가하기 in Pandas DataFrame R에서는 대부분의 핸들링을 자유롭게 하던 나는 파이썬으로 그 작업들을 하나씩 진행하고자 한다. 분..

data-newbie.tistory.com

많은 도움이 될 듯 하다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments