여러 조건으로 DataFrame을 인덱싱할 때 Pandas\' AND(&) 및 OR(|) 연산자가 반전된 것처럼 보이는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-25 16:30:09
원래의
636명이 탐색했습니다.

Why Does Pandas' AND (&) and OR (|) Operators Seem Reversed When Indexing a DataFrame with Multiple Conditions?

pandas: 데이터 프레임을 인덱싱하는 동안 여러 조건으로 인한 예기치 않은 동작

여러 열의 값을 기준으로 DataFrame의 행을 필터링할 때 다음 사항이 중요합니다. AND(&) 및 OR(|) 연산자의 동작을 이해합니다.

최근 관찰에서 이러한 연산자의 동작이 반대인 것으로 나타났습니다. OR 연산자는 AND 연산자처럼 동작하고 그 반대도 마찬가지입니다.

설명을 위해 다음 DataFrame을 고려해보세요.

<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) })

# Insert -1 values
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>
로그인 후 복사

결과는 다음과 같습니다.

<code class="python">      Original df      Using AND (&)      Using OR (|)    
             a  b              a   b             a   b
0            0  0              0   0             0   0
1           -1 -1            NaN NaN           NaN NaN
2            2  2              2   2             2   2
3           -1  3            NaN NaN            -1   3
4            4 -1            NaN NaN             4  -1

[5 rows x 6 columns]</code>
로그인 후 복사

출력에서 볼 수 있듯이 AND 연산자는 하나 이상의 값이 -1인 행을 삭제하는 반면 OR 연산자는 두 값이 모두 -1이 아닌 행을 유지합니다.

이 동작은 직관에 반하는 것처럼 보일 수 있지만 삭제하지 않고 유지하려는 행에 대한 조건을 지정하고 있다는 것을 기억하면 알 수 있습니다.

  • df1의 경우 행을 유지하도록 지정하고 있습니다. 둘 다 df.a와 df.b는 -1이 아닙니다.
  • df2의 경우 df.a 또는 둘 중 하나 행을 유지하도록 지정합니다. df.b는 -1이 아닙니다.

따라서 관찰된 동작은 정확합니다.

위 내용은 여러 조건으로 DataFrame을 인덱싱할 때 Pandas\' AND(&) 및 OR(|) 연산자가 반전된 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!