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

파이썬으로 DataFrame의 인덱스와 열 전치하기: 3가지 방법 완벽 정리

개요

pandas DataFrame에서 인덱스(행)와 열을 서로 뒤바꾸는 전치(transpose) 작업은 데이터 분석에서 자주 사용되는 기본 연산입니다. 이 글에서는 파이썬으로 DataFrame을 전치하는 세 가지 방법을 예제 코드와 실행 결과와 함께 자세히 살펴봅니다.

입력 데이터

다음과 같은 DataFrame이 있다고 가정했을 때, 인덱스와 열을 전치한 결과는 아래와 같습니다.

전치된 DataFrame은
   0 1
0 1 4
1 2 5
2 3 6

방법 1: 중첩 리스트 컴프리헨션 활용

  • DataFrame을 정의합니다.

  • 중첩 리스트 컴프리헨션(nested list comprehension)을 사용하여 2차원 리스트의 각 요소를 순회하면서 결과를 저장합니다.

result = [[data[i][j] for i in range(len(data))] for j in range(len(data[0]))]
  • 결과를 다시 DataFrame으로 변환합니다.

df2 = pd.DataFrame(result)

예제

전체 구현 코드를 통해 더 자세히 이해해 보겠습니다 −

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data)
print("원본 DataFrame은\n", df)
result = [[data[i][j] for i in range(len(data))] for j in range(len(data[0]))]
df2 = pd.DataFrame(result)
print("전치된 DataFrame은\n", df2)

출력

원본 DataFrame은
   0 1 2
0 1 2 3
1 4 5 6
전치된 DataFrame은
   0 1
0 1 4
1 2 5
2 3 6

방법 2: transpose() 메서드 또는 T 속성 활용

  • DataFrame을 정의합니다.

  • pandas에서 기본 제공하는 df.T 속성 또는 df.transpose() 메서드를 DataFrame에 적용합니다.

df.transpose() # 또는 df.T

예제

전체 구현 코드를 통해 더 자세히 이해해 보겠습니다 −

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data)
print("원본 DataFrame은\n", df)
print("전치된 DataFrame은\n", df.transpose())

출력

원본 DataFrame은
   0 1 2
0 1 2 3
1 4 5 6
전치된 DataFrame은
   0 1
0 1 4
1 2 5
2 3 6

방법 3: zip() 함수 활용

  • DataFrame을 정의합니다.

  • zip 메서드는 튜플들의 반복자(iterator)를 반환합니다. * 연산자로 2차원 리스트를 언패킹한 뒤 zip으로 묶으면 전치 효과를 얻을 수 있습니다. 정의는 다음과 같습니다.

result = zip(*data)
  • 결과를 DataFrame으로 변환합니다.

df2 = pd.DataFrame(result)

예제

전체 구현 코드를 통해 더 자세히 이해해 보겠습니다 −

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data)
print("원본 DataFrame은\n", df)
result = zip(*data)
df2 = pd.DataFrame(result)
print("전치된 DataFrame은\n", df2)

출력

원본 DataFrame은
   0 1 2
0 1 2 3
1 4 5 6
전치된 DataFrame은
   0 1
0 1 4
1 2 5
2 3 6

마무리

실무에서는 가장 간결하고 직관적인 방법 2(df.T 또는 df.transpose())를 사용하는 것이 좋습니다. 방법 1과 방법 3은 pandas에 의존하지 않고 순수 파이썬 문법만으로 전치 원리를 이해하는 데 큰 도움이 되므로, 학습 목적이나 리스트 데이터를 직접 다룰 때 유용하게 활용할 수 있습니다.