Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 딕셔너리를 활용해 Pandas DataFrame의 여러 열 이름 한 번에 변경하기

Pandas DataFrame에서 여러 열(column) 헤더의 이름을 한 번에 변경하려면 rename() 메서드를 사용하고, 기존 이름과 새 이름을 매핑한 딕셔너리를 columns 매개변수에 전달하면 됩니다. 이 글에서는 단계별 예제와 함께 그 과정을 자세히 살펴보겠습니다.

1단계: DataFrame 생성

먼저 예제로 사용할 DataFrame을 만들어 보겠습니다.

import pandas as pd

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Mustang', 'Tesla', 'Mustang', 'Mercedes', 'Tesla', 'Audi'],
    "Cubic Capacity": [2000, 1800, 1500, 2500, 2200, 3000, 2000],
    "Reg Price": [7000, 1500, 5000, 8000, 9000, 6000, 1500],
    "Units Sold": [200, 120, 150, 120, 210, 250, 220]
})

2단계: 열 이름 매핑 딕셔너리 생성

다음으로, 변경할 열 이름 정보를 담은 딕셔너리를 만듭니다. 키(key)는 기존 열 이름, 값(value)은 새로운 열 이름으로 지정합니다.

dictionary = {
    'Car': 'Car Name',
    'Cubic Capacity': 'CC',
    'Reg Price': 'Registration Price',
    'Units Sold': 'Units Purchased'
}

3단계: rename() 메서드 적용

rename() 메서드에 앞서 만든 딕셔너리를 columns 인자로 전달합니다. inplace=True 옵션을 설정하면 별도의 변수에 재할당하지 않고도 원본 DataFrame이 직접 수정됩니다.

dataFrame.rename(columns=dictionary, inplace=True)

전체 예제 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd

# DataFrame 생성
dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Mustang', 'Tesla', 'Mustang', 'Mercedes', 'Tesla', 'Audi'],
    "Cubic Capacity": [2000, 1800, 1500, 2500, 2200, 3000, 2000],
    "Reg Price": [7000, 1500, 5000, 8000, 9000, 6000, 1500],
    "Units Sold": [200, 120, 150, 120, 210, 250, 220]
})

print("DataFrame ...\n", dataFrame)

# 열 이름을 변경하기 위한 딕셔너리 생성
# 키는 기존 이름, 값은 새 이름
dictionary = {
    'Car': 'Car Name',
    'Cubic Capacity': 'CC',
    'Reg Price': 'Registration Price',
    'Units Sold': 'Units Purchased'
}

# rename() 메서드에 딕셔너리를 columns로 지정
dataFrame.rename(columns=dictionary, inplace=True)

print("\nUpdated DataFrame ...\n", dataFrame)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

DataFrame ...
        Car  Cubic Capacity  Reg Price  Units Sold
0       BMW            2000       7000         200
1   Mustang            1800       1500         120
2    Tesla            1500       5000         150
3   Mustang            2500       8000         120
4  Mercedes            2200       9000         210
5    Tesla            3000       6000         250
6     Audi            2000       1500         220

Updated DataFrame ...
   Car Name   CC  Registration Price  Units Purchased
0      BMW  2000                7000              200
1  Mustang  1800                1500              120
2    Tesla  1500                5000              150
3  Mustang  2500                8000              120
4 Mercedes  2200                9000              210
5    Tesla  3000                6000              250
6     Audi  2000                1500              220

추가 팁

  • inplace=True 대신 dataFrame = dataFrame.rename(columns=dictionary)처럼 반환값을 새 변수에 할당하는 방식으로도 열 이름을 변경할 수 있습니다.
  • 딕셔너리에 포함되지 않은 열 이름은 그대로 유지되므로, 필요한 열만 선택적으로 변경할 수 있습니다.
  • Pandas 최신 버전(2.x)에서는 inplace=True 사용 시 동작 변경 관련 경고가 발생할 수 있으므로, 가능하면 반환값을 할당하는 방식을 사용하는 것이 좋습니다.