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

주어진 시리즈에 부울 논리 AND, OR, XOR 연산을 수행하는 Python 프로그램 작성하기

부울(True/False) 값을 담고 있는 판다스 시리즈가 하나 주어져 있고, 이 시리즈에 대한 각 부울 연산의 결과가 아래와 같다고 가정해 보겠습니다.

AND 연산 결과:
0     True
1     True
2    False
dtype: bool

OR 연산 결과:
0     True
1     True
2     True
dtype: bool

XOR 연산 결과:
0     False
1     False
2     True
dtype: bool

해결 방법

이 문제는 다음과 같은 단계로 해결할 수 있습니다.

  • 시리즈 정의 — 부울 값과 NaN 값을 함께 포함하는 시리즈를 만들되, dtype을 "bool"로 지정합니다.

  • AND 연산 — 정의된 시리즈의 모든 요소에 True와 비트별 AND(&) 연산을 적용합니다.

  • OR 연산 — 정의된 시리즈의 모든 요소에 True와 비트별 OR(|) 연산을 적용합니다.

  • XOR 연산 — 정의된 시리즈의 모든 요소에 True와 비트별 XOR(^) 연산을 적용합니다.

series_and = pd.Series([True, np.nan, False], dtype="bool") & True
series_or  = pd.Series([True, np.nan, False], dtype="bool") | True
series_xor = pd.Series([True, np.nan, False], dtype="bool") ^ True

핵심 포인트: dtype을 "bool"로 지정하면 NaN 값이 자동으로 True로 변환됩니다. 부울 타입은 결측값을 표현할 수 없기 때문입니다. 따라서 인덱스 1의 NaN은 True로 취급되어 연산 결과에 그대로 반영됩니다.

예제 코드

전체 구현 코드를 통해 더 자세히 살펴보겠습니다.

import pandas as pd
import numpy as np

series_and = pd.Series([True, np.nan, False], dtype="bool") & True
print("AND 연산 결과: \n", series_and)

series_or = pd.Series([True, np.nan, False], dtype="bool") | True
print("OR 연산 결과: \n", series_or)

series_xor = pd.Series([True, np.nan, False], dtype="bool") ^ True
print("XOR 연산 결과: \n", series_xor)

출력 결과

AND 연산 결과:
0     True
1     True
2    False
dtype: bool

OR 연산 결과:
0     True
1     True
2     True
dtype: bool

XOR 연산 결과:
0     False
1     False
2     True
dtype: bool

결과 분석

각 연산 결과는 다음과 같은 기본 논리 규칙에서 비롯됩니다.

  • AND(&) — 두 값이 모두 True일 때만 True를 반환합니다. 따라서 False & True는 False가 됩니다.

  • OR(|) — 두 값 중 하나라도 True이면 True를 반환합니다. 어떤 값이라도 True와 OR 연산을 하면 항상 True가 됩니다.

  • XOR(^) — 두 값이 서로 다를 때만 True를 반환합니다. 즉, True ^ True는 False이고 False ^ True는 True입니다.