• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Python, SQL 게시판 Pandas apply를 하나의 열에 여러번 적용하고싶습니다

Pandas apply를 하나의 열에 여러번 적용하고싶습니다

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #14997

    김주형
    참가자

    df = pd.read_excel('pd.xlsx', engine='openpyxl', sheet_name='Sheet1')

    def 메모(a):
        if re.search('버', str(a)):
            return '버스'
        elif re.search('수당', str(a)):
            return '급여'

    def 카드(a):
        if re.search('체크취소', str(a)):
            return '체크취소'

    df['구분'] = df['출금계좌메모'].apply(메모)
    df['구분'] = df['의뢰인/수취인'].apply(카드)

    df.to_excel('pd.xlsx', index=False)

     

    위 처럼 apply를 여러번 적용하여(함수 추가예정)

    '구분' column에 기록해주고싶은데

    apply를 적용하면 해당 함수에 적용되지 않는 row는 적용을 하지 않는 것이 아니라

    공란으로 덮어씌워버리는지 apply를 하나밖에 적용할 수가 없네요.

    구글링을 몇번 해보았지만 만족할 만한 답변을 찾을수가 없었습니다.

    apply를 하나의 열에 다중으로 적용하려면 어떻게 할 수 있을까요?

    #14999

    codingapple
    키 마스터

    메모() 적용한 다음에 그 결과를 가지고 카드() 적용하는 것인가요

    그럼 메모() 결과를 저장할 임시 컬럼 하나를 만들거나

    메모랑 카드 함수가 비슷한 로직인 것같은데 그냥 함수 2개를 합친 새로운 함수를 하나 만드는게 가장 간단하지 않을까요 

    #15000

    김주형
    참가자

    답변 감사합니다.

    메모() 적용한 다음에 그 결과를 가지고 카드() 적용하는 것인가요

    : 맞습니다.

    그럼 메모() 결과를 저장할 임시 컬럼 하나를 만들거나

    : 생각은 해 보았는데, 임시 컬럼으로 다시 카드 함수의 결과와는 어떻게 합쳐야할까요?

    메모랑 카드 함수가 비슷한 로직인 것같은데 그냥 함수 2개를 합친 새로운 함수를 하나 만드는게 가장 간단하지 않을까요 

    : 완전히 동일한 로직입니다. 그런데 보시다시피 '출금계좌메모', '의뢰인/수취인'으로 참조하는 열이 다릅니다. or 등으로 여러 열을 참조해보게 하고 싶었으나, 뜻대로 되지 않았습니다. 다중의 열에 apply를 적용할 방법이 없을까요?

    #15014

    codingapple
    키 마스터

    근데 그럼 한칸에 '급여'랑 '체크취소'가 둘다 들어가야하는 상황이 생기는 것 아닐까요 

    그런 상황없다고 가정하면 

     

    df['임시'] = df['출금계좌메모'].apply(메모)

    df['임시2'] = df['의뢰인/수취인'].apply(카드)

    df.fillna("", inplace=True)

    df['구분']= df['임시'] + df['임시2']

    print(df)

     

    이러면 쉽습니다 

     

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠