Python Pandas를 사용하여 열을 행으로 변환하는 방법
Python Pandas를 사용하여 열을 행으로 변환하는 방법
melt() 함수 사용
melt()
함수는 데이터 프레임을 "긴 형식"으로 변환하는 데 사용됩니다. 즉, 각 행은 하나의 변수와 해당 변수의 값을 나타냅니다. melt()
함수를 사용하여 열을 행으로 변환하려면 다음과 같이 하십시오.
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 열을 행으로 변환
df_melted = df.melt(id_vars=['A'], value_vars=['B', 'C'])
print(df_melted)
# 출력
# A variable value
# 0 1 B 4
# 1 2 B 5
# 2 3 B 6
# 3 1 C 7
# 4 2 C 8
# 5 3 C 9
위 코드에서 id_vars
매개변수는 행 식별자로 사용될 열을 지정하며 value_vars
매개변수는 변환될 열을 지정합니다.
stack() 함수 사용
stack()
함수는 다중 인덱스 데이터 프레임을 만들기 위해 사용됩니다. 열을 행으로 변환하려면 stack()
함수를 다음과 같이 사용할 수 있습니다.
df_stacked = df.stack()
print(df_stacked)
# 출력
# A B 1 4
# C 7
# A B 2 5
# C 8
# A B 3 6
# C 9
위 코드에서 stack()
함수는 열 이름을 첫 번째 인덱스 레벨로 사용하고 행 인덱스를 두 번째 인덱스 레벨로 사용하여 데이터 프레임을 평평하게 만듭니다.
직접적인 방법
데이터 프레임이 작거나 간단한 경우 직접적인 방법으로 열을 행으로 변환할 수 있습니다. 다음은 예시입니다.
df_new = pd.DataFrame()
for col in df.columns:
df_new[col] = df[col].tolist()
print(df_new)
# 출력
# 0 1 2
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
위 코드에서 루프를 사용하여 각 열을 새로운 데이터 프레임의 행으로 변환합니다.
결론
예제 코드
import pandas as pd
# 데이터 프레임 생성
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 1. `melt()` 함수 사용
df_melted = df.melt(id_vars=['A'], value_vars=['B', 'C'])
print(df_melted)
# 출력
# A variable value
# 0 1 B 4
# 1 2 B 5
# 2 3 B 6
# 3 1 C 7
# 4 2 C 8
# 5 3 C 9
# 2. `stack()` 함수 사용
df_stacked = df.stack()
print(df_stacked)
# 출력
# A B 1 4
# C 7
# A B 2 5
# C 8
# A B 3 6
# C 9
# 3. 직접적인 방법
df_new = pd.DataFrame()
for col in df.columns:
df_new[col] = df[col].tolist()
print(df_new)
# 출력
# 0 1 2
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
이 코드는 다음과 같은 작업을 수행합니다.
df
라는 데이터 프레임을 생성합니다.melt()
함수를 사용하여df
데이터 프레임의 열을 행으로 변환합니다.
대체 방법
DataFrame.to_dict() 및 dict.fromkeys() 사용
df_dict = df.to_dict(orient='records')
df_new = pd.DataFrame.from_dict(df_dict, orient='index')
print(df_new)
# 출력
# 0 1 2
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
이 방법은 다음과 같이 작동합니다.
DataFrame.to_dict()
함수를 사용하여 데이터 프레임을 딕셔너리로 변환합니다.dict.fromkeys()
함수를 사용하여 딕셔너리의 키를 행 레이블로 사용하는 새 딕셔너리를 만듭니다.DataFrame.from_dict()
함수를 사용하여 새 딕셔너리를 데이터 프레임으로 변환합니다.
NumPy 배열 사용
다음은 NumPy 배열을 사용하여 열을 행으로 변환하는 방법입니다.
import numpy as np
df_new = pd.DataFrame(np.array(df).T)
print(df_new)
# 출력
# 0 1 2
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
df
데이터 프레임을 NumPy 배열로 변환합니다.- NumPy 배열의 전치행렬을 계산합니다.
- NumPy 배열을 데이터 프레임으로 변환합니다.
리스트 컴프리헨션 사용
df_new = pd.DataFrame([list(row) for row in df.values])
print(df_new)
# 출력
# 0 1 2
# 0 1 4 7
# 1 2 5 8
# 2 3 6 9
- 데이터 프레임의 값을 반복합니다.
- 각 행의 값을 리스트로 변환합니다.
- 리스트를 데이터 프레임으로 변환합니다.
결론
python pandas