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

Python Pandas – 다중 인덱스에서 어느 한 수준이라도 NaN이면 값 삭제하기

다중 인덱스(MultiIndex)에서 어느 한 수준이라도 NaN이 포함되어 있을 때 해당 값을 삭제하려면 multiIndex.dropna() 메서드를 사용합니다. 이때 how 매개변수를 'any'로 설정하면 됩니다.

1. 필요한 라이브러리 임포트

먼저 pandas와 numpy 라이브러리를 임포트합니다.

import pandas as pd
import numpy as np

2. NaN 값이 포함된 다중 인덱스 생성

일부 값이 NaN인 다중 인덱스를 생성합니다. names 매개변수는 인덱스의 각 수준(level)에 부여할 이름을 지정합니다.

multiIndex = pd.MultiIndex.from_arrays([[5, 10], [np.nan, 20], [25, np.nan], [35, 40]], names=['a', 'b', 'c', 'd'])

3. dropna()로 NaN이 있는 항목 삭제하기

다중 인덱스에서 어느 한 수준이라도 NaN이면 해당 항목을 삭제합니다. 단 하나의 NaN 값만 존재해도 dropna()는 그 항목 전체를 제거합니다. 이를 위해 how 매개변수를 'any'로 지정합니다.

print("\nDropping the value when any level is NaN...\n", multiIndex.dropna(how='any'))

전체 예제 코드

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

import pandas as pd
import numpy as np

# 일부 값이 NaN인 다중 인덱스 생성
# names 매개변수는 인덱스의 각 수준 이름을 지정
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [np.nan, 20], [25, np.nan], [35, 40]], names=['a', 'b', 'c', 'd'])

# 다중 인덱스 출력
print("Multi-index...\n", multiIndex)

# 어느 한 수준이라도 NaN이면 해당 항목 삭제
# 단 하나의 NaN만 있어도 dropna()는 항목 전체를 삭제
# dropna()의 how 매개변수를 'any'로 설정
print("\nDropping the value when any level is NaN...\n", multiIndex.dropna(how='any'))

실행 결과

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

Multi-index...
MultiIndex([( 5, nan, 25.0, 35),(10, 20.0, nan, 40)],names=['a', 'b', 'c', 'd'])

Dropping the value when any level is NaN...
MultiIndex([], names=['a', 'b', 'c', 'd'])

참고: how 매개변수의 동작 방식

how 매개변수의 기본값은 'any'입니다. 즉, 별도로 지정하지 않아도 하나의 수준에만 NaN이 있어도 해당 항목이 삭제됩니다. 반대로 how='all'로 설정하면 모든 수준이 NaN인 경우에만 항목이 삭제되므로, 상황에 맞게 선택하여 사용하시기 바랍니다.