>  기사  >  백엔드 개발  >  Pandas 필터링 작업에서 AND(`&`) 및 OR(`|`) 연산자를 사용하면 예기치 않은 결과가 생성되는 이유는 무엇입니까?

Pandas 필터링 작업에서 AND(`&`) 및 OR(`|`) 연산자를 사용하면 예기치 않은 결과가 생성되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-25 06:55:28629검색

Why Does Using AND (`&`) and OR (`|`) Operators in Pandas Filtering Operations Produce Unexpected Results?

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

데이터 분석에서 pandas는 데이터 프레임을 조작하고 처리하는 데 중요한 라이브러리입니다. 필터링 작업을 수행하는 동안 여러 조건을 사용할 때 연산자의 동작을 이해하는 것이 중요합니다.

'a'와 ''라는 두 열의 값을 기반으로 데이터 프레임의 행을 필터링하려는 시나리오를 고려해 보겠습니다. 비'. AND '&' 연산자와 OR '|' 사용 연산자를 사용하면 AND는 하나 이상의 값이 -1인 행을 삭제하고 OR은 두 값이 모두 -1인 행을 유지해야 합니다.

<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>

예기치 않게 AND 연산자는 하나 이상의 값이 있는 모든 행을 삭제합니다. 는 -1이고 OR 연산자에서는 두 값을 모두 -1로 설정해야 삭제됩니다.

이 동작을 이해하는 열쇠는 유지하려는 항목에 따라 조건을 작성한다는 점을 기억하는 것입니다. 우리가 삭제하고 싶은 것은 아닙니다.

  • df1의 경우: (df.a != -1) & (df.b != -1)은 "df.a가 아닌 행을 유지 - 1이고 df.b는 -1이 아닙니다". 이는 하나 이상의 값이 -1인 행을 삭제하는 것과 같습니다.
  • df2의 경우: (df.a != -1) | (df.b != -1)은 "df.a 또는 df.b가 -1이 아닌 행 유지"를 의미합니다. 이는 두 값이 모두 -1인 행을 삭제하는 것과 같습니다.

잠재적인 문제를 방지하려면 df['a'][1] = -1 대신 df.loc 및 df.iloc와 같은 체인 액세스를 사용하는 것이 중요합니다.

위 내용은 Pandas 필터링 작업에서 AND(`&`) 및 OR(`|`) 연산자를 사용하면 예기치 않은 결과가 생성되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.