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

파이썬으로 데이터프레임 레코드를 C 순서와 F 순서로 평탄화하는 방법


데이터프레임이 하나 있고, 이를 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차원 배열로 변환할 수 있습니다.