Python/Pandas

[Pandas] 파이썬 데이터프레임 열 이름 바꾸기 방법 정리 : columns, rename

jimmy_AI 2022. 4. 9. 23:32
반응형

파이썬 판다스 DataFrame column name 변경법

파이썬의 판다스 모듈에서 데이터프레임의 칼럼 이름을 바꾸는 방법을

columns 속성을 변경하는 경우과 rename 함수를 이용하는 경우로 나누어

간략하게 설명해보도록 하겠습니다.

 

이해를 돕기 위하여, 아래와 같은 간단한 데이터프레임이 df라는 변수에 담겨있는 상황에서

열 이름을 바꾸는 경우를 가정해보도록 하겠습니다.

import pandas as pd

a = {'A' : [1, 2, 3, 4], 'B' : [5, 6, 7, 8], 'C' : [9, 10, 11, 12]}
df = pd.DataFrame(a)

df

 

 

df.columns 속성 이용 1 : 열 이름 목록 직접 지정

DataFrame의 열 이름 목록은 df.columns 속성에 저장되어 있으며,

이를 바꾸면 열 이름도 같이 변경된다는 점을 활용하여 column의 이름 컨트롤이 가능합니다.

df.columns # Index(['A', 'B', 'C'], dtype='object')

 

위 특징을 이용하여, df.columns = [열 이름 목록 리스트] 형태로 각 순서에 해당되는

열의 이름들을 직접 지정할 수 있습니다.

df.columns = ['aaa', 'bbb', 'ccc']

df

 

단, 리스트의 원소 개수는 칼럼 개수와 일치해야만 한다는 점에 유의해주세요.

df.columns = ['aaa', 'bbb', 'ccc', 'ddd']
# ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements
반응형

df.columns 속성 이용 2 : 특정 순서의 열 이름 변경

이번에는 특정 순서에 해당하는 칼럼의 이름만 변경하고 싶은 경우의 예제입니다.

 

다만, 열 이름이 저장되어 있는 Index 객체는 아래와 같이 리스트와 같은 형태의

인덱싱을 통한 원소 변경이 불가능하다는 특징이 있어, 다른 방법으로 우회를 해야합니다.

df.columns[0] = 'aaa' # TypeError: Index does not support mutable operations

 

이 경우, 가장 간단한 방법 중 하나로 열 이름이 저장된 Index 객체를 리스트 객체로 변환 후

원하는 위치의 원소를 변경하고, 다시 df.columns 속성으로 지정해주는 방법이 있습니다.

col_list = list(df.columns)
col_list[0] = 'aaa'
df.columns = col_list

df

 

 

df.rename 함수 이용 : 특정 이름의 열 이름 변경

rename 함수에서 이름 변경을 원하는 칼럼 목록 map을 딕셔너리 형태로 작성하여

특정 이름을 가진 칼럼들의 이름을 원하는대로 쉽게 바꿀 수 있습니다.

 

df = df.rename(columns = {'x1' : 'y1', 'x2' : 'y2'})처럼 작성해주면

x1 열은 y1으로, x2 column은 y2로 이름이 변경되는 방식입니다.

df = df.rename(columns = {'A' : 'aaa', 'B' : 'bbb'})

df