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

Python Pandas putmask() – 마스크 조건에 맞는 값을 설정한 새로운 인덱스 반환하기

Pandas에서 마스크(mask) 조건에 따라 값을 설정한 새로운 Index 객체를 반환하려면 index.putmask() 메서드를 사용합니다. 이 메서드는 지정한 조건(마스크)이 참(True)인 위치의 값을 다른 값으로 교체한 결과를 새 인덱스 형태로 돌려줍니다.

putmask() 메서드란?

putmask()는 NumPy의 putmask 기능을 기반으로 하며, 첫 번째 인자로 불리언(Boolean) 마스크를, 두 번째 인자로 대체할 값을 받습니다. 조건이 참인 요소만 지정한 값으로 바뀌고, 나머지 요소는 원래 값을 그대로 유지합니다.

기본 사용법

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

Pandas 인덱스를 생성합니다.

index = pd.Index([5, 65, 10, 17, 75, 40])

생성된 Pandas 인덱스를 출력해 확인합니다.

print("Pandas Index...\n", index)

이제 30보다 작은 값들을 111로 대체하는 마스크를 적용합니다.

print("\nMask...\n", index.putmask(index < 30, 111))

전체 예제 코드

아래는 위 과정을 하나로 정리한 전체 코드입니다.

import pandas as pd

# Pandas 인덱스 생성
index = pd.Index([5, 65, 10, 17, 75, 40])

# Pandas 인덱스 출력
print("Pandas Index...\n", index)

# 인덱스에 포함된 요소 개수 확인
print("\nNumber of elements in the index...\n", index.size)

# 데이터의 dtype 확인
print("\nThe dtype object...\n", index.dtype)

# 30보다 작은 값을 111로 대체하는 마스크 적용
print("\nMask...\n", index.putmask(index < 30, 111))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Pandas Index...
Int64Index([5, 65, 10, 17, 75, 40], dtype='int64')

Number of elements in the index...
6

The dtype object...
int64

Mask...
Int64Index([111, 65, 111, 111, 75, 40], dtype='int64')

결과 해석

출력 결과를 보면 원본 인덱스 [5, 65, 10, 17, 75, 40] 중에서 30보다 작았던 값인 5, 10, 17이 모두 111로 변경된 것을 확인할 수 있습니다. 반면 65, 75, 40처럼 조건을 만족하지 않는 값들은 그대로 유지됩니다.

이처럼 putmask()를 활용하면 복잡한 반복문 없이도 조건 기반의 값 치환 작업을 간결하게 처리할 수 있어, 데이터 전처리 단계에서 매우 유용하게 사용됩니다.