Pandas에서 단일 레벨(single-level)로 구성된 열을 쌓으려면 stack() 메서드를 사용하면 됩니다. stack()은 DataFrame의 열(column)을 행(row) 인덱스 아래로 회전시켜, 넓은 형태의 데이터를 좁고 긴 형태로 변환해 주는 강력한 재구조화 도구입니다.
1. 라이브러리 임포트
먼저 필요한 라이브러리를 가져옵니다.
import pandas as pd
2. 단일 레벨 열을 가진 DataFrame 생성
행 인덱스와 단일 레벨의 열을 가진 DataFrame을 만들어 보겠습니다.
dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b'])
3. stack() 메서드로 DataFrame 쌓기
stack() 메서드를 호출하면 열 라벨이 인덱스의 하위 레벨로 이동하면서 MultiIndex가 생성됩니다.
dataFrame.stack()
전체 예제 코드
다음은 위 과정을 모두 포함한 완성된 코드입니다.
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b'])
# 원본 DataFrame 출력
print("DataFrame...\n", dataFrame)
# stack() 적용
print("\nStacking...\n", dataFrame.stack())
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame...
a b
w 10 15
x 20 25
y 30 35
z 40 45
Stacking...
w a 10
b 15
x a 20
b 25
y a 30
b 35
z a 40
b 45
dtype: int64
실행 결과를 살펴보면, 기존에 가로로 나열되어 있던 열 'a'와 'b'가 각 행 인덱스(w, x, y, z) 아래의 하위 레벨로 이동한 것을 확인할 수 있습니다. 이처럼 stack()은 열을 행 계층으로 내려보내 데이터를 세로로 길게 재구조화하며, 정반대 동작은 unstack() 메서드로 수행할 수 있습니다.