Pandas의 drop() 메서드를 사용하면 다중 인덱스(MultiIndex) 데이터프레임에서 특정 행을 간단하게 삭제할 수 있습니다. 먼저 예제에 사용할 다중 인덱스 배열을 생성해 보겠습니다.
arr = [np.array(['car', 'car', 'car','bike', 'bike', 'bike', 'truck', 'truck', 'truck']),
np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])]다음으로 위 배열을 인덱스로 지정하여 다중 인덱스 데이터프레임을 만들고, 인덱스 이름도 설정합니다.
dataFrame = pd.DataFrame(
np.random.randn(9, 3), index=arr, columns=['Col 1', 'Col 2', 'Col 3'])
dataFrame.index.names = ['level 0', 'level 1']특정 행 삭제하기
이제 drop() 메서드를 호출하여 원하는 행을 삭제합니다. 삭제할 행은 튜플 형태로 ('car', 'valueA')처럼 레벨 0과 레벨 1의 인덱스 값을 함께 지정하며, axis=0은 행 방향 삭제를, inplace=True는 원본 데이터프레임에 변경 사항을 즉시 반영하라는 의미입니다.
dataFrame.drop(('car','valueA'), axis=0, inplace=True)전체 예제 코드
지금까지 설명한 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import numpy as np
import pandas as pd
# 다중 인덱스 배열 생성
arr = [np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']),
np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])]
# 다중 인덱스 데이터프레임 생성
dataFrame = pd.DataFrame(
np.random.randn(9, 3), index=arr,columns=['Col 1', 'Col 2', 'Col 3'])
dataFrame.index.names = ['level 0', 'level 1']
print(dataFrame)
print("\nDropping specific row...\n");
dataFrame.drop(('car','valueA'), axis=0, inplace=True)
print(dataFrame)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다. ('car', 'valueA')에 해당하는 행이 삭제된 것을 볼 수 있습니다.
Col 1 Col 2 Col 3
level 0 level 1
car valueA 0.845965 -0.850953 -0.335662
valueB 0.534764 -0.107635 1.008855
valueC -0.507910 -0.664625 1.671653
bike valueA -0.475751 -0.244113 0.672352
valueB -0.273670 1.118635 0.428750
valueC -1.064504 -0.344729 0.481037
truck valueA -0.508659 1.352390 1.382799
valueB 1.144299 -0.092568 -1.071624
valueC -0.710767 0.967018 -0.047430
Dropping specific row...
Col 1 Col 2 Col 3
level 0 level 1
car valueB 0.534764 -0.107635 1.008855
valueC -0.507910 -0.664625 1.671653
bike valueA -0.475751 -0.244113 0.672352
valueB -0.273670 1.118635 0.428750
valueC -1.064504 -0.344729 0.481037
truck valueA -0.508659 1.352390 1.382799
valueB 1.144299 -0.092568 -1.071624
valueC -0.710767 0.967018 -0.047430