Pandas에서 수정하는 방법: 시리즈의 진리값이 모호합니다.


Python에서 발생할 수 있는 오류는 다음과 같습니다.

 ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

이 오류는 일반적으로 &| 문자를 사용하는 대신 또는 단어를 사용하여 pandas DataFrame을 필터링하려고 할 때 발생합니다. 운영자.

이 튜토리얼에서는 실제로 이 오류를 해결하는 방법을 설명합니다.

오류를 재현하는 방법

다음과 같은 pandas DataFrame을 생성한다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12

이제 팀이 “A” 이고 점수가 20보다 작은 행을 필터링한다고 가정합니다.

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

또는 팀이 “A” 이거나 점수가 20보다 작은 행을 필터링한다고 가정해 보겠습니다.

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

두 시나리오 모두 계열의 진리값이 모호하다는 오류를 수신합니다.

오류를 수정하는 방법

필터링할 때 이 오류를 방지하려면 &| 강요. 운영자.

예를 들어, 다음 코드를 사용하여 팀이 “A” 이고 포인트가 20 미만인 행을 필터링할 수 있습니다.

 #filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]

team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6

또는 다음 코드를 사용하여 팀이 “A” 이거나 점수가 20보다 작은 행을 필터링할 수 있습니다.

 #filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]

        team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5

두 시나리오 모두 &|를 사용했기 때문에 오류가 발생하지 않습니다. 강요. 운영자.

참고 : 여러 조건으로 pandas DataFrame을 필터링할 때 각 개별 조건 주위에 괄호를 포함하는 것이 중요합니다. 그렇지 않으면 오류가 발생합니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

해결 방법: “pandas” 모듈에 “dataframe” 속성이 없습니다.
Pandas에서 수정하는 방법:SettingWithCopyWarning
Pandas에서 수정하는 방법: TypeError: 플롯할 숫자 데이터가 없습니다.

의견을 추가하다

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