[파이썬] pandas 데이터 프레임의 대체 (where)

데이터 프레임에서 특정 조건을 만족하는 값들을 변경하거나 대체해야할 때, where 함수를 사용할 수 있다. 이 함수는 numpy 라이브러리에서 차용되었으며, pandas의 데이터프레임에도 같은 기능을 제공한다. where 함수를 사용하면 조건식을 만족하는 원소는 그대로 유지되고, 그렇지 않은 원소는 원하는 값으로 대체할 수 있다.

다음은 where 함수를 사용하여 데이터 프레임의 값을 조건에 맞게 변경하는 예제이다.

import pandas as pd

# 샘플 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie', 'Dave'],
        '나이': [25, 34, 28, 45],
        '성별': ['여성', '남성', '여성', '남성']}
df = pd.DataFrame(data)

# 나이가 30세보다 큰 경우에만 성별을 'unknown'으로 대체
df['성별'] = df['성별'].where(df['나이'] > 30, 'unknown')

print(df)

위 코드에서는 where 함수를 사용하여 df['나이'] > 30 조건을 만족하는 경우에만 df['성별'] 값을 유지하고, 그 외의 경우에는 ‘unknown’으로 대체하였다. 결과적으로 Bob의 성별은 ‘남성’으로 유지되고, AliceCharlie의 성별은 ‘unknown’으로 대체되었다.

where 함수는 다양한 조건과 함께 사용할 수 있다. 예를 들어, 조건마다 다른 값을 대체할 수도 있다. 조건에 맞지 않는 경우 대체할 값을 다르게 지정해주면 된다.

# 나이가 30세보다 큰 경우 '성인', 30세 이하인 경우 '미성년자'로 대체
df['성별'] = df['성별'].where(df['나이'] > 30, '미성년자').where(df['나이'] <= 30, '성인')

위 코드에서는 첫 번째 where 함수에서 나이가 30세보다 큰 경우에만 성별을 대체할 값을 유지한 상태로 두었고, 두 번째 where 함수에서는 이전에 대체되지 않은 모든 나이에 대해 성별을 대체할 값을 지정하였다.

where 함수를 사용하여 데이터프레임의 값을 조건에 맞게 변경하는 방법을 알아보았다. 이를 사용하면 특정 조건을 만족하는 데이터를 처리하거나 대체하는 작업을 효과적으로 수행할 수 있게 된다.