Pandas 다중 조건 인덱싱: 예기치 않은 동작
Pandas에서는 DataFrame에 필터를 적용하는 것이 일반적인 작업입니다. 그러나 여러 조건을 사용하는 경우, 특히 AND 및 OR과 같은 논리 연산자를 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다.
문제:
두 열의 값을 기준으로 행을 필터링하는 경우 , AND 연산자는 OR처럼 동작하고 그 반대의 경우도 마찬가지입니다. 예를 들어 아래 코드는 다음과 같습니다.
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) df['a'][1] = -1 df['b'][1] = -1 df['a'][3] = -1 df['b'][4] = -1 df1 = df[(df.a != -1) & (df.b != -1)] df2 = df[(df.a != -1) | (df.b != -1)] print(pd.concat([df, df1, df2], axis=1, keys=['original df', 'using AND (&)', 'using OR (|)',]))</code>
설명:
예상치 못한 동작은 Pandas 인덱싱의 맥락에서 논리 연산자가 해석되는 방식에서 비롯됩니다.
AND 연산자:
OR 연산자:
따라서 AND 연산자는 두 열 중 하나에 -1이 없으면 행을 제외하므로 OR처럼 동작합니다. 반대로 OR 연산자는 두 열에 -1이 포함되지 않은 경우에만 행을 포함하므로 AND처럼 동작합니다.
추가 참고:
위 내용은 여러 조건을 사용하는 Pandas 인덱싱이 예기치 않은 동작을 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!