Pandas Rename 열 및 인덱스
때때로 우리는 Pandas DataFrame 개체에서 열과 인덱스의 이름을 바꾸려고 합니다. pandas DataFrame rename() 함수를 사용하여 열과 인덱스의 이름을 바꿀 수 있습니다. 다음 매개 변수를 지원합니다.
- 매퍼: 열 및 인덱스에 적용할 사전 또는 함수입니다. '축' 매개변수는 대상 축(열 또는 색인)을 결정합니다.
- 인덱스: 인덱스 이름을 변경하려면 사전 또는 함수여야 합니다.
- 열: 열 이름을 변경하려면 사전 또는 함수여야 합니다.
- 축: 정수 또는 문자열일 수 있습니다. 대상 축을 정의하기 위해 'mapper' 매개변수와 함께 사용됩니다. 허용되는 값은 ('index', 'columns') 또는 숫자(0, 1)입니다. 기본값은 '색인'입니다.
- inplace: True이면 DataFrame이 변경됩니다. 그렇지 않으면 새 DataFrame이 반환되고 현재 DataFrame은 변경되지 않습니다. 기본값은 'False'입니다.
- 레벨: int 또는 레벨 이름이 될 수 있습니다. MultiIndex의 경우에 사용되며 지정된 수준의 레이블만 바꿉니다.
- 오류: 가능한 값은 ('ignore', 'raise')이고 기본값은 'ignore'입니다. 'raise'로 지정하면 사전과 같은 'mapper', 'index' 또는 'columns'에 변환 중인 인덱스에 없는 레이블이 포함되어 있을 때 KeyError가 발생합니다. '무시'하면 기존 키의 이름이 바뀌고 추가 키는 무시됩니다.
rename() 함수에 대한 몇 가지 중요한 사항입니다.
- 의도를 명확하게 지정하기 위해 키워드 인수를 사용하는 것이 좋습니다.
- 사전의 값에 따라 이 함수를 사용하여 단일 열 또는 여러 열의 이름을 바꿀 수 있습니다.
Pandas rename() 함수를 사용하는 몇 가지 예를 살펴보겠습니다.
1. Pandas 열 이름 바꾸기
import pandas as pd
d1 = {'Name': ['Pankaj', 'Lisa', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'Editor', 'Author']}
df = pd.DataFrame(d1)
print('Source DataFrame:\n', df)
# rename columns
df1 = df.rename(columns={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'})
print('Result DataFrame:\n', df1)
산출:
Source DataFrame:
Name ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
Result DataFrame:
EmpName EmpID EmpRole
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
위의 rename() 함수 호출은 다음과 같은 방식으로도 작성할 수 있습니다.
df1 = df.rename(mapper={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'},
axis='columns') # axis=1 corresponds to columns
매퍼와 축 인수를 사용하는 것보다 키워드 인수를 사용하는 것이 더 명확합니다.
2. Pandas 단일 열 이름 바꾸기
단일 열의 이름을 바꾸려면 columns dict 매개변수에 단일 키-값 쌍을 전달하기만 하면 됩니다.
df1 = df.rename(columns={'Name': 'EmpName'})
print(df1)
산출:
EmpName ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
열 사전에 일치하지 않는 매핑이 있는 경우 결과는 동일합니다.
df1 = df.rename(columns={'Name': 'EmpName', 'X': 'Y'}) # same result since there is no X column
3. Pandas Rename 인덱스
색인의 이름을 바꾸려면 'index' 매개변수에 대한 사전을 전달하십시오.
df2 = df.rename(index={0: '#0', 1: '#1', 2: '#2'})
print('Renamed Indexes:\n', df2)
산출:
Renamed Indexes:
Name ID Role
#0 Pankaj 1 CEO
#1 Lisa 2 Editor
#2 David 3 Author
매퍼 및 축 인수를 사용하여 인덱스의 이름을 바꿀 수도 있습니다.
df2 = df.rename({0: '#0', 1: '#1', 2: '#2'}, axis=0)
# axis='index' will work, first argument is assigned to 'mapper'
4. Pandas 단일 인덱스 이름 바꾸기
df2 = df.rename(index={1: '#1'})
print(df2)
산출:
Name ID Role
0 Pankaj 1 CEO
#1 Lisa 2 Editor
2 David 3 Author
5. DataFrame 변경
소스 DataFrame 자체를 변경하려면 inplace 인수를 True로 전달하십시오.
import pandas as pd
d1 = {'Name': ['Pankaj', 'Lisa', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'Editor', 'Author']}
df = pd.DataFrame(d1)
print('Source DataFrame:\n', df)
df.rename(index={0: '#0', 1: '#1', 2: '#2'}, columns={'Name': 'EmpName', 'ID': 'EmpID', 'Role': 'EmpRole'}, inplace=True)
print('Source DataFrame:\n', df)
산출:
Source DataFrame:
Name ID Role
0 Pankaj 1 CEO
1 Lisa 2 Editor
2 David 3 Author
Source DataFrame:
EmpName EmpID EmpRole
#0 Pankaj 1 CEO
#1 Lisa 2 Editor
#2 David 3 Author
6. 매퍼 기능을 사용하여 열 이름 바꾸기
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
print(df)
df.rename(mapper=str.lower, axis=1, inplace=True)
print(df)
산출:
NAME ID ROLE
0 Pankaj 1 CEO
1 Lisa 2 Editor
name id role
0 Pankaj 1 CEO
1 Lisa 2 Editor
7. 함수를 사용하여 열 및 인덱스 이름 바꾸기
import pandas as pd
import math
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
df.rename(columns=str.lower, index=math.degrees, inplace=True)
print(df)
산출:
name id role
0.00000 Pankaj 1 CEO
57.29578 Lisa 2 Editor
8. 엄격한 이름 바꾸기 및 KeyError 발생
import pandas as pd
df = pd.DataFrame({'NAME': ['Pankaj', 'Lisa'], 'ID': [1, 2], 'ROLE': ['CEO', 'Editor']})
df1 = df.rename(columns={'Salary': 'EmpSalary'}) # unmatched mappings are ignored
df1 = df.rename(columns={'Salary': 'EmpSalary'}, errors='raise') # unmatched mappings raising KeyError
산출:
Traceback (most recent call last):
File "/Users/pankaj/Documents/PycharmProjects/hello-world/journaldev/pandas/pandas_rename_column.py", line 58, in <module>
df1 = df.rename(columns={'Salary': 'EmpSalary'}, errors='raise')
KeyError: "['Salary'] not found in axis"
9. 참고문헌
- pandas DataFrame rename() API 문서
- Python Pandas 모듈 자습서