-
[pandas]데이터프레임 행 단위 연산 (apply, 조건에 맞게 처리,예외 처리)데이터분석 2022. 11. 10. 18:30
데이터 프레임 A,B,C가 있음.
C가 마스터 테이블
C의 'p' 열, 'm' 열의 각 행의 값이 조건
A,B 데이터 프레임의 열 이름이 C의 p열과 m열의 각 값과 일치할 경우 연산을 해야함 .
이럴때는 apply함수를 쓰면 됨.
apply에서 lambda 함수로 쓰기엔 함수가 길다 싶으면 위에 함수를 정의해주자.
정의해준 함수 안에서 예외 처리 구문을 넣으면 해결!
def cond_mul_np(p,m): try: np_p = A.loc[:,[p]].to_numpy() np_m = B.loc[:,[m]].to_numpy() mul = np_p * np_m result = mul.sum() except: # A or B 에서 C의 조건에 해당하는 열이 없는 경우 result = None return result temp = C.copy() score = temp.apply(lambda row: cond_mul_np(row['p'], row['m']), axis = 1) scored_table = pd.concat([temp,score],axis=1) print(scored_table)데이터프레임에 for문 돌리는 대신 apply를 적극 활용하자.
'데이터분석' 카테고리의 다른 글
[pandas] 아이디 기준으로 최근 거래 항목 3개 뽑고 싶을 때 groupby ,tail (0) 2022.11.25 [pandas], 콤마 제외하고 특수 문자 제거 ( 데이터프레임, replace, 정규표현식) (0) 2022.11.11 [pandas] read_csv 화폐 단위 열 콤마(,) 제외하고 숫자로 읽어오기 (0) 2022.10.14 [pandas] read_csv 필요한 열만 읽기 usecols (0) 2022.10.13 [pandas] replace 로 값 한꺼번에 바꾸기 ( replace with dictionary, regex) (0) 2022.08.10