본문 바로가기
Programming/Python

[Pandas] row <-> col by melt, pivot and transpose

row -> col 로 보내는 함수 melt()

 

df.melt()   or  pd.melt(df)

 

모두 적용 -> df.melt()

 

특정 col 고정하고 적용 -> df.melt(id_vars='col name')  or df.melt(id_vars=['col1', 'col2', ...])

Ex)

df.melt(id_vars=['name','kor'])  # name, kor 고정

 

특정 col만 적용  value_vars=['col1', 'col2' ... ] 를 기존에 melt()에 추가

Ex)

df.melt(id_vars='name', value_vars=['kor','eng'])  # kor, eng만 적용. name은 고정

 

col 이름 변경: var_name=' '을 추가.  value_name=' ' 추가로 변경한 위치의 칼럼이름 변경

Ex)

df.melt(id_vars='name', value_vars=['kor','eng'], var_name='subject', value_name='score')

 

 

 

 

 

 

 

 

col -> row로 보내는 함수 pivot()

-> df.pivot( index=row 인덱스col, columns=col 인덱스, values=값으로 사용할 자료 )

 

예제 데이터와 함수가 다음과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pivot 예제)

index = row 기준점

columns = col 기준점

values = 내용물

 

 

 

 

 

values가 score, grade일 때의 모습

 

 

 

 

 

둘 다 나타내고 싶다면

이와같이 리스트로 묶어 표현

 

 

 

 

 

values를 생략하면

df내용 바탕으로

내용이 자동 모두 선택

 

 

 

 

 

 

 

 

그냥 일괄적으로 행<->열 바꾸는 함수는 transpose()를 이용한다.   선형대수가 생각나네?

 

예제)

 

728x90
반응형