해결 방법: [float64] 유형의 배열을 스칼라 유형 [bool]과 비교할 수 없습니다.
pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
이 오류는 일반적으로 여러 조건을 기반으로 DataFrame의 하위 집합을 시도하고 각 개별 조건 주위에 괄호를 배치하지 못한 경우에 발생합니다.
다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.
오류를 재현하는 방법
다음과 같은 pandas DataFrame을 생성한다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], ' points ': [21, 30, 26, 29, 14, 29, 22, 16]}) #view DataFrame print (df) team position points 0 AG 21 1 AG 30 2 AF26 3AC 29 4 BG 14 5 BF 29 6 BF 22 7 BC 16
이제 .loc 함수를 사용하여 팀이 “A”이고 위치가 “G”인 행만 표시한다고 가정합니다.
#attempt to only show rows where team='A' and position='G'
df. loc [df. team == ' A ' & df. position == ' G ']
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
개별 조건 주위에 괄호를 넣지 않았기 때문에 ValueError가 발생합니다.
& 연산자가 == 연산자보다 우선하므로 팬더는 이 명령문을 올바른 순서로 해석하지 못합니다.
오류를 수정하는 방법
이 오류를 수정하는 가장 쉬운 방법은 다음과 같이 개별 조건 주위에 괄호를 추가하는 것입니다.
#only show rows where team='A' and position='G'
df. loc [(df. team == ' A ') & (df. position == ' G ')]
team position points
0 A G 21
1 A G 30
ValueError 는 수신되지 않았으며 DataFrame의 하위 집합을 성공적으로 관리했습니다.
추가 리소스
다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
수정방법: 열이 겹치는데 접미사가 지정되지 않음
해결 방법: 개체와 int64 열을 병합하려고 합니다.
해결 방법: 일치하지 않는 열이 있는 행을 정의할 수 없습니다.