웹사이트 검색

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() 함수에 대한 몇 가지 중요한 사항입니다.

  1. 의도를 명확하게 지정하기 위해 키워드 인수를 사용하는 것이 좋습니다.
  2. 사전의 값에 따라 이 함수를 사용하여 단일 열 또는 여러 열의 이름을 바꿀 수 있습니다.

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 모듈 자습서