ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
# df는 데이터 프레임
A = df1[df1['proj']>=90 & df1['att']>=5]
list(A.index)
자주는 뜨는 에러 메세지입니다. Pandas를 통해 필터링 실수를 하게 된다면 이와 같은 에러메시지가 뜨는데 이 에러 메세지를 직독하면 다음과 같습니다.
ValueError : 값 오류
The truth value of a Series is ambiguous. : Series의 참/거짓 값이 애매하다
Use a.empty, a.bool(), a.item(), a.any(), a.all()
물론 any() , all() , bool() 을 사용하여 오류를 해결할 수 있습니다. 하지만 이 보다 근본적인 문제 가장 먼저 확인해야 할 부분은 ( ) 연산자 처리가 잘 되었는지입니다. 만약 위 코드 처럼 연산자 우선순위가 처리 되어 있지 않다면 논리 연산이 아닌 비트 연산으로 처리되려 해서 오류가 발생하는 것 입니다. 따라서 ( ) 감싸주면 됩니다.
하지만 이러한 필터링이 많아진다면 괄호의 개수도 늘어날 것 이고 매우 혼동될 수 있습니다.
df1.query() 방식이 있습니다.
A = df1.query("proj >= 90 and att >= 5")
df1.query()는 문자열을 사용하여 데이터프레임에서 조건을 적용하는 방식입니다.
즉, SQL과 비슷한 문법을 사용하여 데이터를 필터링할 수 있습니다.
'Too_Much_Information' 카테고리의 다른 글
파이썬의 이상한 법칙: 256과 257의 운명 (1) | 2025.02.18 |
---|---|
TMI _ Jupyter Notebook에서 print() 없이 출력이 가능한 이유 (0) | 2025.02.06 |