반응형
03-05. 함수연속적용_요소별 (transform)
DataFrame.transform(func, axis=0, args, kwargs)
개요
transform메서드는 agg와 비슷하게 함수를 적용하는 메서드이지만,
단일 요소별로 함수를 동시에 적용할 수 있다는 장점이 있습니다. 마치 apply와 applymap의 차이와 비슷합니다.
사용법
기본 사용법
df.transform(func, axis=0, args, kwargs)
func : 함수입니다.
axis :{0 : index(row) / 1 : columns} 축입니다 0은 행, 1은 열 입니다.
arg : 함수의 인수 입니다.
kwargs : dict 형태의 함수의 인수입니다.
반응형
예시
먼저 간단한 3x3짜리 데이터를 만들어보겠습니다.
col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=[[10,40,70],[20,50,80],[30,60,90]],index=row,columns=col)
print(df)
>>
col1 col2 col3
row1 10 40 70
row2 20 50 80
row3 30 60 90
입력되는 함수의 형태에 따라
입력함수로는 먼저 np.함수 형태나 그냥 문자열 형태로의 입력이 가능합니다.
np함수의 경우
ex1 = df.transform(np.sqrt)
print(ex1)
>>
col1 col2 col3
row1 3.162278 6.324555 8.366600
row2 4.472136 7.071068 8.944272
row3 5.477226 7.745967 9.486833
문자열일 경우
ex2 = df.transform('sqrt')
print(ex2)
>>
col1 col2 col3
row1 3.162278 6.324555 8.366600
row2 4.472136 7.071068 8.944272
row3 5.477226 7.745967 9.486833
lambda함수나 사용자 정의 함수를사용할 수도 있습니다.
agg와 다르게 기존 레이블이 표시됩니다.
ex3 = df.transform(lambda x : np.sqrt(x))
print(ex3)
>>
col1 col2 col3
row1 3.162278 6.324555 8.366600
row2 4.472136 7.071068 8.944272
row3 5.477226 7.745967 9.486833
여러 함수를 동시에 적용하는 경우
list나 dict형태로 func값을 입력하는 경우 여러 함수를 동시에 적용할 수 있습니다.
list로 입력하는 경우 마치 multi index처럼 multi columns가 생성됩니다.
ex4 = df.transform(['exp','sqrt'])
print(ex4)
>>
col1 col2 col3
exp sqrt exp sqrt exp sqrt
row1 2.202647e+04 3.162278 2.353853e+17 6.324555 2.515439e+30 8.366600
row2 4.851652e+08 4.472136 5.184706e+21 7.071068 5.540622e+34 8.944272
row3 1.068647e+13 5.477226 1.142007e+26 7.745967 1.220403e+39 9.486833
dict를 이용하는 경우 순서를 변경하는것도 가능합니다.
ex5 = df.transform({'col2':'exp','col1':'sqrt'})
print(ex5)
>>
col2 col1
row1 2.353853e+17 3.162278
row2 5.184706e+21 4.472136
row3 1.142007e+26 5.477226
반응형
'파이썬완전정복-Pandas DataFrame > 03. 함수의 적용' 카테고리의 다른 글
Pandas DataFrame 03-06. 문자열 형식의 계산식 적용 (eval) (0) | 2022.01.10 |
---|---|
Pandas DataFrame 03-04. 함수연속적용_축별 (aggregate, agg) (0) | 2022.01.10 |
Pandas DataFrame 03-03. 함수내 함수 연속적용 (pipe) (0) | 2022.01.10 |
Pandas DataFrame 03-02. 요소별 (applymap) (0) | 2022.01.10 |
Pandas DataFrame 03-01. 축 기준 (apply) (0) | 2022.01.10 |