apply함수를 이용하면 pandas 데이터 프레임에서 복잡한 연산을 쉽게 할 수 있어 편리합니다. 하나의 칼럼을 원하는 방법으로 처리하는 것도 가능하고, 다수의 칼럼을 이용하는 것도 할 수 있습니다. 오늘은 파이썬 pandas apply함수 이용하는 3가지 방법에 대해서 알아보겠습니다.

 

 

1. 하나의 칼럼 계산하기

apply함수에는 입력파라미터로 함수가 들어갑니다. 함수의 input에는 개별 값이 들어가고, return 되는 반환값이 결과로 나온다고 생각하면 편리한데요. if문뿐만 아니라 복잡한 계산도 함수로 만들어서 적용할 수 있습니다.

 

lambda함수를 이용하면 간단한 조건문 등은 더 깔끔하게 작성할 수 있습니다.

 

def trans(x):
    if x == "서울특별시":
        return 1
    elif x == "부산광역시":
        return 1
    
    return 0
    
df['is_sb'] = df['do'].apply(trans)

 

 

2. 여러 개 칼럼 계산해서, 하나의 칼럼값으로 도출하기

이 때는 하나의 row(행)가 들어간다고 생각하면 쉽습니다. 칼럼을 선택하는 것은 칼럼명을 이용해서 인덱싱 하면 됩니다. 계산을 하고 도출하고자 하는 값을 return에 넣어주면 됩니다.

 

def trans2(x):
    if x['do'] == "서울특별시" and x['gu'] == '종로구' :
        return 1
    elif x['do'] == "부산광역시" and x['dong'] == '기장읍':
        return 1
    
    return 0
    
df['is_sb2'] = df.apply(trans2, axis=1)

 

 

3. 여러 개 칼럼 계산해서, 여러 칼럼값으로 도출하기

인풋은 앞과 동일합니다. return 부분을 수정해주면 되는데요. 이전에는 하나의 변수를 return 했다면, 이제는 input을 동일하게 return 합니다. return 하기 전에 칼럼명을 인덱싱 해서 수정하고 싶은 값을 넣으면 됩니다.
주의할 점은 칼럼을 새로 만드는 것은 안 됩니다. 미리 칼럼을 만들고 그 값을 변경하는 형태로 작성해야 합니다.

 

df['do1'] = ""
df['gu1'] = ""

def trans3(x):
    if x['do'] == "서울특별시" and x['gu'] == '종로구' :
        x['do1'] = 's';x['gu1'] ='j'
        return x
    
    return x
    
df1 = df.apply(trans3, axis=1)

 

 

apply함수에 진행바 적용하기

apply함수를 이용하면 행이 많은 경우 시간이 오래 걸릴 수 있습니다. 이럴 때는 얼마나 진행됐는지 확인하기 위해 프로그레스 바를 출력하는 게 좋은데요. apply함수를 적용할 때 진행바가 나오게 할 수 있습니다.

 

from tqdm import tqdm

tqdm.pandas()
df1 = df.progress_apply(trans3, axis=1)

 

 

오늘은 이렇게 파이썬 pandas apply함수 이용하는 3가지 방법에 대해서 알아보았습니다. 칼럼이나 행 단위로 계산하는 것은 아무리 복잡한 방법이라도 apply함수를 이용해서 할 수 있습니다. pandas dataframe을 이용하는데 도움이 되셨기를 바랍니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기