데이터프레임이 하나 있고, 이를 C 순서(C order)와 F 순서(F order)로 평탄화(flatten)한 결과가 다음과 같다고 가정해 보겠습니다.
flat c_order:
[10 12 25 13 3 12 11 14 24 15 6 14]
flat F_order:
[10 25 3 11 24 6 12 13 12 14 15 14]
여기서 C 순서는 행 우선(row-major) 방식으로 각 행의 값을 차례대로 읽어 나가는 것이고, F 순서는 열 우선(column-major) 방식으로 각 열의 값을 차례대로 읽어 나가는 것을 의미합니다.
해결 방법
이 문제를 해결하기 위해 아래 단계를 따릅니다.
데이터프레임을 정의합니다.
df.values.ravel()함수에order='C'인수를 설정하여 호출하고, 그 결과를 C_order 변수에 저장합니다.
C_order = df.values.ravel(order='C')
df.values.ravel()함수에order='F'인수를 설정하여 호출하고, 그 결과를 F_order 변수에 저장합니다.
F_order = df.values.ravel(order='F')
예제
다음 코드를 통해 더 자세히 이해해 보겠습니다.
import pandas as pd
df = pd.DataFrame({'Id':[10, 25, 3, 11, 24, 6],
'Age':[12,13,12,14,15,14] })
print("Dataframe is:\n",df)
C_order = df.values.ravel(order='C')
print("flat c_order:\n",C_order)
F_order = df.values.ravel(order='F')
print("flat F_order:\n",F_order)
출력
Dataframe is:
Id Age
0 10 12
1 25 13
2 3 12
3 11 14
4 24 15
5 6 14
flat c_order:
[10 12 25 13 3 12 11 14 24 15 6 14]
flat F_order:
[10 25 3 11 24 6 12 13 12 14 15 14]
결과에서 확인할 수 있듯이, C 순서로 평탄화하면 첫 번째 행의 값들(Id 열, Age 열 순)이 먼저 나열되고, F 순서로 평탄화하면 Id 열의 모든 값이 먼저 나열된 후 Age 열의 값들이 이어집니다. 이처럼 ravel() 함수의 order 매개변수만 변경하면 동일한 데이터를 원하는 방식으로 손쉽게 1차원 배열로 변환할 수 있습니다.