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이 아닌 행을 유지합니다.
이 동작은 직관에 반하는 것처럼 보일 수 있지만 삭제하지 않고 유지하려는 행에 대한 조건을 지정하고 있다는 것을 기억하면 알 수 있습니다.
따라서 관찰된 동작은 정확합니다.
위 내용은 여러 조건으로 DataFrame을 인덱싱할 때 Pandas\' AND(&) 및 OR(|) 연산자가 반전된 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!