본문 바로가기
학습장/Data Engineering

pandas - stack()

by daedoo_ 2022. 10. 3.

아래로 내려져있는 (row로 쌓여있는) 데이터를 컬럼으로 만들 필요가 있을 경우 pandas pivot() 을 활용하여 손쉽게 transpose 할 수 있습니다. (oracle 등 쿼리로 pivot / unpivot 하려면 ㅠ,.ㅜ)

 

반대로, 컬럼명을 포함해 옆으로 (컬럼으로) 놓여져있는 데이터를 행으로 만들 필요가 있을 경우에는 pandas의 stack() 함수를 통해 가능했습니다.

>>> df_single_level_cols = pd.DataFrame([[0, 1], [2, 3]],
                                       index=['cat', 'dog'],
                                       columns=['weight', 'height'])
>>> df_single_level_cols
     weight height
cat       0      1
dog       2      3
>>> df_single_level_cols.stack()
cat  weight    0
     height    1
dog  weight    2
     height    3
dtype: int64

- index 컬럼명을 지정하지 않으면 아래로 쌓을 기준이 없이 모든 컬럼이 같은 컬럼으로 row로 쌓여서 의도치 않은 형식이 되어버릴 수 있음

- set_index('컬럼명') 통해 stack 처리시 기준이 될 컬럼 지정

df.set_index('컬럼명').stack()

 

- stack() 메소드는 리턴값이 series 타입이므로 별도로 DataFrame으로 변환 필요

pd.DataFrame(df.set_index(‘컬럼명’).stack())

 

'학습장 > Data Engineering' 카테고리의 다른 글

spark 실행구조  (0) 2022.10.31
[spark] RDD란?  (2) 2022.10.24
Vertica 특징  (4) 2022.09.29
python sqllineage 라이브러리  (6) 2022.08.29
ERROR s2v.S2V: ERROR: S2V.save(): did not pass the Vertica requirements pre-check.   (0) 2021.07.14

댓글