달나라 노트

Python Pandas : pandas.DataFrame.rename 본문

Python/Python Pandas

Python Pandas : pandas.DataFrame.rename

CosmosProject 2020. 11. 24. 15:53
728x90
반응형

 

 

pandas.DataFrame.rename

rename은 DataFrame의 column name이나 row index name을 변경해주는 역할을 합니다.




먼저 테스트용 DataFrame을 생성합시다.

import pandas as pd

dict_1 = {
    'col1': [1, 2, 3, 4, 5],
    'col2': [6, 7, 8, 9, 10],
    'col3': [11, 12, 13, 14, 15]
}

df_1 = pd.DataFrame(dict_1)

print(df_1)
print(type(df_1))

- Output
   col1  col2  col3
0     1     6    11
1     2     7    12
2     3     8    13
3     4     9    14
4     5    10    15
<class 'pandas.core.frame.DataFrame'>
  




이제 위에서 생성한 DataFrame의 컬럼명을 바꿔봅시다.

import pandas as pd

dict_col_mapping = {
    'col1': 'column1',
    'col2': 'column2',
    'col3': 'column3'
}

df_1 = pd.DataFrame(dict_1)
df_1 = df_1.rename(columns=dict_col_mapping)
# df_1.rename(columns=dict_col_mapping, inplace=True) -> 이렇게 inplace option을 True로 하면 따로 할당과정을 거치지 않고 df_1 DataFrame 자체를 바꿀 수 있습니다.

print(df_1)
print(type(df_1))

- Output
   column1  column2  column3
0        1        6       11
1        2        7       12
2        3        8       13
3        4        9       14
4        5       10       15
<class 'pandas.core.frame.DataFrame'>
  

rename을 이용하여 컬럼을 바꿀 때에는 rename의 인자 중 column이라는 인자에 {기존 컬럼명: 변경할 컬럼명} 이처럼 컬럼명의 key value 쌍을 이루는 dictionary를 전달하여 진행합니다.

 

보면 기존에 col1이라는 컬럼명은 column1로 바뀌고 다른 컬럼도 마찬가지임을 볼 수 있죠.




이번에도 컬럼명을 바꿔볼건데 만약 기존 DataFrame에 존재하지 않는 컬럼을 rename의 인자로 전달하면 어떻게될까요?

import pandas as pd

dict_col_mapping = {
    'col1': 'column1',
    'col2': 'column2',
    'col3': 'column3',
    'col4': 'column4'
}

df_1 = pd.DataFrame(dict_1)
df_1 = df_1.rename(columns=dict_col_mapping)

print(df_1)
print(type(df_1))

- Output
   column1  column2  column3
0        1        6       11
1        2        7       12
2        3        8       13
3        4        9       14
4        5       10       15
<class 'pandas.core.frame.DataFrame'>
  

위 결과를 보시면 dict_col_mapping에서 col4라는 기존 DataFrame에 존재하지 않는 컬럼명이 존재함을 알 수 있습니다.

 

하지만 결과는 에러가 발생하지도 않고 DataFrame에 존재하는 3개의 컬럼만 나온 것을 알 수 있죠.

 

이렇게 rename은 대상 DataFrame에 존재하는 컬럼들만 이름을 바꾸게 됩니다.

 

그래서 엑셀 파일을 관리하는데 컬럼명에 실수가 있거나 여러 경우의 컬럼으로 바뀔 수 있는 경우라면 raname에 여러 경우의 수를 입력해두어 컬럼명의 통일을 할 수 있죠.




 

 

rename에는 lamda도 사용할 수 있습니다.

import pandas as pd

import pandas as pd
import re

dict_1 = {
    'col1': [1, 2, 3, 4, 5],
    'col2': [6, 7, 8, 9, 10],
    'col3': [11, 12, 13, 14, 15]
}

df_1 = pd.DataFrame(dict_1)

df_1 = df_1.rename(columns=lambda x: re.sub(r'[a-z]', 'z', x))
print(df_1)
print(type(df_1))

- Output
   zzz1  zzz2  zzz3
0     1     6    11
1     2     7    12
2     3     8    13
3     4     9    14
4     5    10    15
<class 'pandas.core.frame.DataFrame'>
  

rename method에 lambda를 적용하면

위 예시처럼 column 이름을 어떠한 함수나 규칙을 이용해서 변경할 수 있습니다.

 

 

 

 

 

 

 

 

 

이제 한번 index를 바꿔보겠습니다.

import pandas as pd

dict_row_mapping = {
    0: 'idx1',
    1: 'idx2',
    2: 'idx3',
    3: 'idx4',
}

df_1 = pd.DataFrame(dict_1)
df_1 = df_1.rename(index=dict_row_mapping)

print(df_1)
print(type(df_1))

- Output
      col1  col2  col3
idx1     1     6    11
idx2     2     7    12
idx3     3     8    13
idx4     4     9    14
4        5    10    15
<class 'pandas.core.frame.DataFrame'>
  

index를 바꿀 때에는 column명 변경과 똑같이 {기존 index 이름: 새로운 index 이름}의 형태인 dictionary를 rename의 index인자로 전달하여 진행할 수 있습니다.

 

위 예시에선 index = 0, 1, 2, 3인 row의 index name이 원하는대로 잘 바뀌었음을 볼 수 있죠.



 

 

 

 

 

728x90
반응형
Comments