본문 바로가기
판다스/판다스 팁

[pandas] 멀티 인덱스인 열을 가지고 있을 때 subtotal 열 만들기

by 김판다t 2024. 2. 20.

 

 

예제 :

 

# 예제 생성
import pandas as pd
data1 = {('김판다', '영어'): [50, 20, 35],
         ('김판다', '국어'): [60, 5, 45],
         ('강승주', '영어'): [70, 10, 60],
         ('강승주', '국어'): [100, 30, 50]}
df = pd.DataFrame(data1)

 

df:

 

 

 

 

 

 문제 : 멀티 인덱스인 열을 가지고 있을 때 subtotal 열 만들어 봅시다.

 

 

 

 

 

 

 

 

groupby의 axis=1이 판다스 2.1.0+에서 사라지기 때문에 전치 데이터 프레임 T를 활용해야 합니다.

 

 

 

subtotal 행을 만드는 사용자 정의 함수를 생성해 그룹바이 객체에 apply 함수와 함께 적용합니다.

 

이때 group_keys=False는 필수입니다

 

# subtotal 행을 생성하는 사용자 정의 함수
def get_subtotal(df):
    df.loc[(df.index[0][0], '총점'), :] = df.sum()
    return df

# groupby로 사용자 정의 함수 적용
out = (df.T.groupby(level=0, group_keys=False, sort=False)
         .apply(get_subtotal).T
)

 

 

 

 

 

 

사실 이것을 수행하는 방법은 여러가지가 있는데

 

정렬상태를 그대로 유지하고 싶다면, groupby가 가장 편리합니다.