가끔가다 데이터프레임에서 컬럼 이름을 변경해야 하는 경우가 있습니다.

 

여기서는 크게 두가지의 경우를 살펴볼 것입니다.

feature(열)의 크기가 작다면 둘 중 어느방법을 사용해도 상관 없습니다

다만, 특정 컬럼만 매칭해서 바꾸고 싶은 경우에는 rename()메소드로 컬럼 인자를 반환해줘야 합니다.

설명보다는 예시로 들어가봅시다.

 

데이터프레임을 생성합니다.

df = pd.DataFrame({

    'a': [4, 5, 6],
    'b': [7, 8, 9],
    'c': [10, 11, 12]},
    index = [1, 2, 3]
)

df

컬럼명들을 'A', 'B', 'C'로 바꾸고 싶다고 가정하면,

크게 두가지 방법이 있습니다.

1. df.columns = [] 리스트 형태로 반환하거나, 

2, df.rename(columns={}) 딕트 형태로 반환하는 방법입니다.

 

차이점이 있습니다.

리스트 형태는 반드시 모든 피처들을 입력해줘야 됩니다.

즉, 열의 피처 개수만큼 리스트 인자가 들어가 있어야 된다는 거죠.

하나라도 부족하면 에러가 뜨게 됩니다.

df.columns = ['A', 'B', 'C']

성공적으로 바뀌었습니다. 

 

바뀌기 전의 데이터프레임에서

df.columns의 리스트 인자를 피처 개수 3개보다 적게 입력해주면 어떻게 될까요?

 

새롭게 데이터 프레임을 초기화 합니다.

df = pd.DataFrame({

    'a': [4, 5, 6],
    'b': [7, 8, 9],
    'c': [10, 11, 12]},
    index = [1, 2, 3]
)

리스트 인자를 기존 피처개수 3개보다 적은 2개로 입력해보겠습니다.

df.columns = ['A', 'B']

하단 에러를 보세요.

에러를 보시면. "열은 3개인데, 너는 2개만 값을 입력했다" 라는 에러메시지가 뜹니다.

즉 df.columns = [] 방식으로는 반드시 컬럼의 개수를 맞춰줘야 됩니다.

 

그러면 두번째 방법을 살펴보죠.

df.rename(columns={})

rename의 파라미터인 columns를 딕트 형태로 반환하는 겁니다.

여기서 키 값은 기존의 컬럼이름이고, 밸류 값은 새롭게 지정하고 싶은 이름입니다.

다행히도 이 방법은 반드시 3개의 인자를 모두 반환할 필요가 없습니다.

키 값을 지정해준 부분만 바꿔주기 때문입니다.

(기존 df에 적용시키기 위해 inplace=True 인자를 넣어줍시다.)

df.rename(columns = {'A':'에이', 'B':'비', 'C':'씨'}, inplace=True)

모든 컬럼의 이름이 바뀌었네요.

그러면 'C' 컬럼은 바꾸지 않도록 하기 위해서 왼쪽부터 두 열만 바꿔봅시다.

df.rename(columns = {'A':'에이', 'B':'비'}, inplace=True)

아까 리스트 형태로는 반드시 모든 컬럼의 갯수만큼 반환해야 했는데,

딕트 형태로 파라미터를 반환하는 rename() 함수는 필요한 피처의 이름만 바꿀 수 있어서 좋네요.

 

요약

컬럼 네임을 바꾸는 방법이 두가지가 있다.

 

1. df.columns = [] 형태로 리스트를 반환하는 방법

이것은 반드시 리스트의 len()과, df의 열의 길이가 동일해야 한다는 점.

 

2. df.rename(columns={}) 형태로 딕트를 반환하는 방법

이것은 모든 열을 다루지 않고, 필요한 열만 키 값으로 지정해서 바꿔줄 수 있다.

 

 

+ Recent posts