해결 방법: [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 열을 병합하려고 합니다.
해결 방법: 일치하지 않는 열이 있는 행을 정의할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다