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: 플롯할 숫자 데이터가 없습니다.