일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- array
- SQL
- Google Excel
- hive
- Github
- Python
- GIT
- google apps script
- Java
- math
- dataframe
- Redshift
- 파이썬
- numpy
- Apache
- PySpark
- Mac
- c#
- PANDAS
- django
- list
- Excel
- string
- Google Spreadsheet
- Kotlin
- Tkinter
- matplotlib
- gas
- PostgreSQL
- Today
- Total
달나라 노트
Python Pandas : pandas.DataFrame.rename 본문
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이 원하는대로 잘 바뀌었음을 볼 수 있죠.