Pandas에서 groupby() 연산을 수행하면 그룹화 기준이 된 열이 새로운 인덱스로 이동하게 됩니다. 그룹화 이후 인덱스를 원래 일련 번호 형태로 되돌리려면 reset_index() 메서드를 사용하면 됩니다.
groupby() 후 인덱스 재설정 절차
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
두 개의 열(Car, Reg_Price)을 가진 DataFrame을 생성합니다.
dataFrame = pd.DataFrame(
{
"Car": ["Audi", "Lexus", "Audi", "Mercedes", "Audi", "Lexus", "Mercedes", "Lexus", "Mercedes"],
"Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
}
)
"Car" 열을 기준으로 데이터를 그룹화하고 각 그룹의 평균값을 계산합니다.
resDF = dataFrame.groupby("Car").mean()
그룹화가 완료된 결과에 대해 reset_index()를 호출하여 인덱스를 재설정합니다.
resDF.reset_index()
전체 예제 코드
다음은 위 과정을 하나로 정리한 전체 코드입니다.
import pandas as pd
# 두 개의 열을 가진 DataFrame 생성
dataFrame = pd.DataFrame(
{
"Car": ["Audi", "Lexus", "Audi", "Mercedes", "Audi", "Lexus", "Mercedes", "Lexus", "Mercedes"],
"Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
}
)
print("DataFrame...\n", dataFrame)
# Car 열을 기준으로 그룹화
resDF = dataFrame.groupby("Car").mean()
print("\n그룹화 결과...\n", resDF)
# 그룹화 후 인덱스 재설정
print("\n인덱스 재설정 결과...\n", resDF.reset_index())
실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
DataFrame...
Car Reg_Price
0 Audi 1000
1 Lexus 1400
2 Audi 1100
3 Mercedes 900
4 Audi 1700
5 Lexus 1800
6 Mercedes 1300
7 Lexus 1150
8 Mercedes 1350
그룹화 결과...
Reg_Price
Car
Audi 1266.666667
Lexus 1450.000000
Mercedes 1183.333333
인덱스 재설정 결과...
Car Reg_Price
0 Audi 1266.666667
1 Lexus 1450.000000
2 Mercedes 1183.333333
출력 결과를 보면, groupby("Car")를 적용한 직후에는 "Car" 열이 인덱스 역할을 하게 됩니다. 하지만 reset_index()를 호출하면 "Car"가 다시 일반 열로 복원되고, 0부터 시작하는 기본 정수 인덱스가 새로 부여되는 것을 확인할 수 있습니다.