Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – stack() 함수로 단일 레벨 열 쌓기

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() 메서드로 수행할 수 있습니다.