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

Python Pandas 다중 인덱스(MultiIndex) 데이터프레임에서 특정 행 삭제하기

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